8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
1/66
INC-112 Programacion IUnidad 3
Profesores: Eliana Providel - Roberto Munoz S.Escuela de Ing. Civil Informatica,
Universidad de Valparaso
{eliana.providel,roberto.munoz.s}@uv.cl
Segundo Semestre 2011
Unidad 3
http://goforward/http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
2/66
Contenidos Unidad 3
Parte I: Funciones.
Parte II: Arreglos.
Parte III: Entrada y Salida de datos, parte II de II.
Parte IV: Archivos.
Unidad 3
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
3/66
Parte II: Arreglos
Unidad 3
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
4/66
Contenidos
Que son?.
Arreglos Unidimensionales.Arreglos Bidimensionales y Multidimensionales.
Caractersticas generales.
Arreglos de caracteres.
Arreglos y funciones.Ordenamiento.
Busqueda.
Unidad 3
Q ?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
5/66
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Que son?
Son un conjunto finito de datos del mismo tipo.
Se agrupan bajo un mismo nombre.
Su almacenamiento en memoria es contigua.
Unidad 3
Q ?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
6/66
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
DeclaracionInicializacionUtilizacion
Declaracion de un arreglo
Declaracion
tipo dato nombre arreglo[tamano
];
tipo dato: puede ser char, int,...
nombre arreglo: nombre que se le dara al arreglo.
tamano: constante que especifica el numero de elementos delarray.
Ej: int arreglo[10];
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
7/66
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
DeclaracionInicializacionUtilizacion
Inicializacion de un arreglos
Dar valores iniciales al arreglo.Ej.
A todo el arreglo:
int arreglo[] = {0,1,2,3,4,5};int arreglo1[4] = {4, 2, 3, 6};
A una posicion del arreglo:arreglo1[3]=7;
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
8/66
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
DeclaracionInicializacionUtilizacion
Utilizacion de los valores del arreglo
Para acceder a los datos del arreglo, se utiliza un ndice, el
nombre del arreglo, y los [ ].El ndice para la primera posicion es 0.
Ej.
1 int arreglo[4] = {4, 2, 3, 6};2 Al acceder a arreglo[4]; error!!!
El primer elemento del arreglo esta en la posicion 0.El ultimo elemento esta en la posicion 3.
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
9/66
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
DeclaracionInicializacionUtilizacion
Declaracion
Declaracion
tipo dato nombre[tamano][tamano]...;
tipo dato: tipo de dato a almacenar.
nombre: Nombre del arreglo.
tamano: tamano de la dimension del arreglo.
Para cada nueva dimension se debe agregar un nuevo [ ]
Ejemplos:1 int arreglo[2][4];2 int arreglo[2][4][3][1];
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
10/66
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
DeclaracionInicializacionUtilizacion
Inicializacion del arreglo
int arreglo1[2][3]= {{1,2},{3,4,5}};
int arreglo1[][3]= {{1,2,3},{3,4,5}};
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
11/66
QArreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
DeclaracionInicializacionUtilizacion
Utilizacion de los datos del arregloPara acceder al arreglo se utiliza el nombre del arreglo, el ndice(para indicar la posicion en el arreglo) y los [ ].No olvidar colocar ; al final.
Ej. int arreglo[2][3][4][5][3];La primera posicion del arreglo sera
1 arreglo[0][0][0][0][0];La ultima posicion del arreglo sera
1 arreglo[1][2][3][4][2];
arreglo[2][3][4][5][3]; Error!!Uso correcto para acceder a un dato:arreglo[1][1];Uso incorrecto:arreglo[1,1]
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
12/66
QArreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Manejo de Indices
Caractersticas Generales
C no chequea lmites de un arreglo, por lo que es muy facil
acceder a un espacio de memoria que no esta reservado.Es tarea del programador!!
Para definir el tamano de un arreglo se pueden utilizarconstantes o expresiones de constantes, pero siempre deben
ser un entero.Un ndice para acceder a un elemento de un arreglo, puedo seruna constante, una variable o una expresion.
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
13/66
Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Manejo de Indices
Manejo de Indices
Utilizando define para los lmites del arreglo.
Ejemplo
#define MAX 100
...
int arreglo[4][MAX];
int arreglo[4][MAX-1];
Unidad 3
Que son?
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
14/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Manejo de Indices
Manejo de Indices
Ejemplo:
...int arreglo[2][3]={{3,4},{5,1,2}};
for(i=0;i
8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
15/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Manejo de Indices
Manejo de Indices
Unidad 3
Que son?A l s U idi si l s
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
16/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Declaracion e inicializacionprintf(...) y scanf(...)
Arreglo de caracteres
Permiten manejar un conjunto de caracteres o smbolos bajoun mismo nombre.
La terminacion de la cadena se identifica con nulo, que esespecificado por \0.
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
17/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Declaracion e inicializacionprintf(...) y scanf(...)
Declaracion e inicializacion del arreglo
Es analogo a los arreglos numericos, solo que ahora se utilizan y .
Ejemplo:
...
char arreglo[4];
char arreglo[4]= "hola";
char arreglo[]= "hola";char arreglo[4]={h,o,l,a};
...
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
18/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Declaracion e inicializacionprintf(...) y scanf(...)
printf(...) y scanf(...) en arreglo de caracteres
Se puede recibir la entrada estandar utilizando la funcionscanf con el formato %s.
De igual forma para printf.
De esta forma se recibe y muestra todo el arreglo.
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
19/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Declaracion e inicializacionprintf(...) y scanf(...)
Ejemplo
...
char nombre[15], apellidos[30];
printf("Introduce tu nombre: ");
scanf("%s",nombre);
printf("Introduce tus apellidos: ");
scanf("%s",apellidos);printf("Usted es %s %s\n",nombre,apellidos);
...
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
20/66
Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Arreglos UnidimensionalesArreglos Multidimensionales
Arreglos y funciones
Al pasar un arreglo como argumento a una funcion se pasasolo el nombre del arreglo.
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
21/66
gArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Arreglos UnidimensionalesArreglos Multidimensionales
Ejemplo
void inv(char s[]){
int t;
for( t=strlen(s)-1; t>=0; t --)
printf("%c",s[t]);
}
int main(){
char inf[]="Programacion I";inv(inf );
return 0;
}
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
22/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Arreglos UnidimensionalesArreglos Multidimensionales
Que hace el programa?
1 Cuando se declara la funcion, se indica que recibira unarreglos:
void inv(char s[]){
...
}
2 Cuando se llama a la funcion, se le pasa el nombre del arreglo.
char inf[]="Programacion I";
inv(inf );
3 Luego la funcion inv(...) recorre el arreglo desde la ultimaposicion y va mostrando el contenido.
Unidad 3
Que son?Arreglos Unidimensionales
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
23/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Arreglos UnidimensionalesArreglos Multidimensionales
Utilizacion de arreglos multidimensionales
Para arreglos multidimensionales, en los argumentos de lafuncion, no se indica la primera dimension pero s todas lasdemas.
Al llamar a la funcion se pasa como parametro o argumento elnombre del arreglo.
Para retornar el arreglos se retorna solo el nombre del arreglo.
Unidad 3
Que son?Arreglos Unidimensionales
A l Bidi i l M l idi i l
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
24/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Arreglos UnidimensionalesArreglos Multidimensionales
Ejemplo:#DEFINE MAX 2
int arreglo[MAX][MAX]={{1,2},{6,7}} ;
int funcion(int arr[][MAX])
{
inti,j;
for(i=0;i
8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
25/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Ordenamiento BurbujaInsertion SortSelection SortQuick Sort
Ordenamiento Burbuja
Para empezar, veremos uno de los algoritmos mas simples ypopulares... Ordenamiento Burbuja o Bubble Sort.
Ordenamiento Burbuja, su nombre proviene del hecho deque los elementos mas livianos (chicos), salgan a flote,
mientras que los mas pesados (grandes) se hundan.
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
26/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Ordenamiento BurbujaInsertion SortSelection SortQuick Sort
Ordenamiento Burbuja
Ejemplo:
15 8 4 50 3
Si el elemento de abajo es mas pequeno se cambian los valores deposicion y se continua con el siguiente numero. Luego que termina
de dar el primer recorrido al arreglo, comienza de nuevo desde elprincipio, pero el elemento mas pesado ya quedo al fondo, por lotanto, ahora se comparan solo los primeros N-1 elementos.
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
27/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Ordenamiento BurbujaInsertion SortSelection SortQuick Sort
Ordenamiento Burbuja
15 8 8 8 8 8 4 4 4 4 4 4 38 15 4 4 4 4 8 8 8 8 8 3 44 4 15 15 15 15 15 15 3 3 3 8 8
50 50 50 50 3 3 3 3 15 15 15 15 153 3 3 3 50 50 50 50 50 50 50 50 50
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
28/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Ordenamiento BurbujaInsertion SortSelection SortQuick Sort
Ordenamiento Burbuja
void bubble(int a[], int n)
{
int i,j;
for (i=n-1;i>0;i--)
for (j=0;j a[j+1])
{
temp = a[j];a[j] = a[j+1];
a[j+1] = temp;
}
}
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
29/66
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Ordenamiento BurbujaInsertion SortSelection SortQuick Sort
Ordenamiento BurbujaOtra forma:
void bubble(int a[], int n)
{
int i,j;
for (i=0;ii;j--)
if (a[j] < a[j-1])
{ temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
} Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
30/66
g yCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
jInsertion SortSelection SortQuick Sort
Insertion Sort I
Parecido a cuando se ordena un mazo de cartas numeradas en
forma arbitraria.Inicialmente se tiene un solo elemento, que obviamente es unconjunto ordenado. Despues, cuando hay k elementosordenados de menor a mayor, se toma el elemento k + 1 y secompara con todos los elementos ya ordenados, deteniendose
cuando se encuentra un elemento mayor. En este punto seinserta el elemento k + 1 debiendo desplazar los demaselementos.
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
31/66
g yCaractersticas Generales
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
jInsertion SortSelection SortQuick Sort
Insertion Sort II
Ejemplo:El elemento k + 1 se va comparando de atras para adelante,
deteniandose con el primer elemento menor. Simultaneamentese van haciendo los desplazamientos.
11 26 47 59 96 3211 26 47 59 9611 26 47 59 9611 26 47 59 9611 26 32 47 59 96
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y Multidimensionales Ordenamiento Burbuja
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
32/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Insertion Sort IIIAlgoritmo On-line
printf("Ingrese tamano del arreglo: ");
scanf("%d",n);
for(k = 0;k < n;k++)
{
printf("Ingreseelementonumero %d", k);
scanf("%d",&x[k]);
if (k > 0){tmp = x[k];
j = k ;
while ((j > 0) && (tmp < x[j-1])){
x[j] = x[j - 1];
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
C i G lOrdenamiento BurbujaI i S
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
33/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Insertion Sort IV
j = j - 1;
}
x[j] = tmp;
}
}
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
C t ti G lOrdenamiento BurbujaI ti S t
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
34/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Insertion Sort VInsertion Sort con arreglo ya generado
v o i d i n s e r t i o n ( i n t x , i n t n ){
i n t k , j ;f o r ( k = 0 ; k < n ; k++){
i f ( k > 0 ){tmp = x [ k ] ;j = k ;
w h i l e ( ( j > 0) && (tmp < x [ j 1 ] ) ){x [ j ] = x [ j 1 ] ; j = j 1 ;
}x [ j ] = tmp ;
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caracter sticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
35/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Insertion Sort VI
}}
}
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
36/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Selection Sort I
El Ordenamiento por Seleccion (Selection Sort) es unalgoritmo de ordenamiento, funciona de la siguiente forma:
Buscar el mnimo elemento de la lista.Intercambiarlo con el primero.Buscar el mnimo en el resto de la lista.Intercambiarlo con el segundo.y as sucesivamente...
Es decir:
Buscar el mnimo elemento entre una posicion i y el final de lalista.Intercambia el mnimo con el elemento de la posicion i.
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
37/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Selection Sort II
Ejemplo:
31 25 12 22 1111 25 12 22 3111 12 25 22 3111 12 22 25 31
11 12 22 25 31
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
38/66
Caractersticas GeneralesArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
Insertion SortSelection SortQuick Sort
Selection Sort IIIv o i d s e l e c t i o n ( i n t a , i n t n ){
i n t i , j , min , tmp ;f o r ( i = 0 ; i < n1; i ++){
min=i ;f o r ( j = i +1; j < n ; j++)
i f ( a [ j ] < a [ min ] )min = j ;
tmp = a [ i ] ;a [ i ] = a [ min ] ;a [ min ] = tmp ;
}}
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
39/66
Ca acte st cas Ge e a esArreglos de caracteres
Arreglos y funcionesOrdenamiento
Busqueda
se t o So tSelection SortQuick Sort
Quick Sort I
Primero que todo se debe mencionar que Quick Sort ocupa laestrategia de Divide y Venceras, la cual consiste en:
Separa el problema en instancias mas pequenas: Fase departicion, divide el trabajop por la mitadCombina las pequenas soluciones en una solucion del problemamayor: Fase de Ordenamiento, conquista las mitades!
Como opera?:
Se elige uno de los elementos del arreglo como pivote.Luego se particionar el arreglo en dos arreglos AL y AR, endonde AL contiene todos los elementos menores que el pivote,y AR todos los mayores al pivote.
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
40/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort II
Y as recursivamente, por lo tanto lo que devuelve el algoritmoes Quicksort(AL) + pivote + Quicksort(AR).
Ejemplo:
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
41/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort III
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesOrdenamiento BurbujaInsertion Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
42/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort IVv o i d q u i c k s o r t ( i n t a , i n t L , i n t R){
i n t p i v o t e , n u e vo P i vo t e ;
i f ( L>
=R )r e t u r n ;
p i v o t e = e l e g i r P i v o t e ( a , L , R ) ;n ue vo Pi v o te = p a r t i c i o n a r ( a , L , R , p i v o t e ) ;q u i c k s o r t ( a , L , n u ev o Pi v ot e 1 ) ;
q u i c k s o r t ( a , n u ev o Pi v ot e + 1 , R ) ;}
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesA l d
Ordenamiento BurbujaInsertion SortS l i S
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
43/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort V
Ejemplo del algoritmo de particionamiento
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesA l d t
Ordenamiento BurbujaInsertion SortS l ti S t
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
44/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort VI
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Ordenamiento BurbujaInsertion SortSelection Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
45/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort VIIv o i d p a r t i c i o n a r ( i n t a , i n t L , i n t R , i n t p i v o t e ){
i n t i , j ;i n t v a l o r P i v o t e=a [ p i v o t e ] ;
INTERCAMBIAR( a [ p i v o t e ] , a [ R ] ) ;i = L ; j = R ;w h i l e ( i v a l o r P i v o t e ) j ;i f ( i
8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
46/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort VIII
El caso de la eleccion del Pivote:
Una eleccion simple de un pivote sera algo as como:
i n t e l e g i r P i v o t e ( i n t a , i n t L , i n t R){
r e t u r n L ;}
Si bien es un algoritmo sencillsimo, es el que mas se ocupa en
terminos generales, elegir el primer elemento, o el ultimo comopivote.Una buena idea es elegir el pivote al azar
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Ordenamiento BurbujaInsertion SortSelection Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
47/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort IXi n t e l e g i r P i v o t e ( i n t a , i n t L , i n t R){
i n t b=RAND()%(RL +1) ;r e t u r n L+b ;
}
Sin embargo, el costo de generar numeros aleatorios es caro, locual no conviene mucho.Lo ideal sera que el pivote fuese la mediana de los valores (de
modo queAL y
AR sean del mismo tamano).Una forma de aproximar es tomar la mediana de tres valores.
Por ejemplo, mirar el que esta en L, el que esta en R, y el queesta en la mitad, y escoger el que sea intermedio entre esostres.
Unidad 3
Que son?Arreglos UnidimensionalesArreglos Bidimensionales y Multidimensionales
Caractersticas GeneralesArreglos de caracteres
Ordenamiento BurbujaInsertion SortSelection Sort
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
48/66
Arreglos de caracteresArreglos y funciones
OrdenamientoBusqueda
Selection SortQuick Sort
Quick Sort Xi n t e l e g i r P i v o t e ( i n t a , i n t L , i n t R){
i n t M = (R + L ) / 2 ;i f ( a [M] < a [ L ] )
INTERCAMBIA ( a [M] , a [ L ] ) ;i f ( a [ R ] < a [ L ] )INTERCAMBIA( a [ R ] , a [ L ] ) ;
i f ( a [ R]
8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
49/66
gArreglos y funciones
OrdenamientoBusqueda
Busqueda Binaria
Generalidades
Existen diferentes alternativas para buscar un elemento dentrode un arreglo.
Algunos entregan un resultado con mayor eficiencia.
Algoritmos:
Busqueda secuencial
Busqueda binaria
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteres
GeneralidadesBusqueda SecuencialBusqueda Binaria
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
50/66
gArreglos y funciones
OrdenamientoBusqueda
Busqueda Binaria
Busqueda Secuencial
Recorre el arreglo comparando cada posicion con el dato quese desea buscar.
Su eficiencia dependera de la posicion en la que encuentre eldato a buscar, ya que el peor caso es que este al final o no loencuentre.
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteres
GeneralidadesBusqueda SecuencialBusqueda Binaria
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
51/66
Arreglos y funcionesOrdenamiento
Busqueda
Busqueda Binaria
Codigo
int search(int vector[], int N, int dato)
{int i;
int pos = -1;
for (i=0; i
8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
52/66
Arreglos y funcionesOrdenamiento
Busqueda
Busqueda Binaria
Busqueda Secuencial
Retorna la posicion en la que encontro el dato.
Si no lo encuentra retorna -1.
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresA l f i
GeneralidadesBusqueda SecuencialBusqueda Binaria
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
53/66
Arreglos y funcionesOrdenamiento
Busqueda
Busqueda Binaria
Busqueda Binaria, Generalidades
Para el correcto funcionamiento del algoritmo el arreglo debe estarordenado.
Idea del argortimo:
Se compara el dato con el elemento del centro del arreglo.
Si son iguales se encontro.
Si es mayor el dato se busca hacia el lado derecho.
Sino se busca hacia el lado izquierda.
Ejemplo: Buscar una palabra en un diccionario.
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
GeneralidadesBusqueda SecuencialBusqueda Binaria
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
54/66
Arreglos y funcionesOrdenamiento
Busqueda
q
Ejemplo
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
GeneralidadesBusqueda SecuencialBusqueda Binaria
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
55/66
Arreglos y funcionesOrdenamiento
Busqueda
Ejemplo
Unidad 3
Que son?Arreglos Unidimensionales
Arreglos Bidimensionales y MultidimensionalesCaractersticas Generales
Arreglos de caracteresArreglos y funciones
GeneralidadesBusqueda SecuencialBusqueda Binaria
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
56/66
Arreglos y funcionesOrdenamiento
Busqueda
int binSearch (double vector[], int N, double buscado){
int izq = 0;
int der = N-1;
int centro = (izq+der)/2;
while ((izq
8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
57/66
Arreglos y funcionesOrdenamiento
Busqueda
Ejercicio
Como seria una implementacion del algoritmo utilizandorecursividad?
Unidad 3
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
58/66
Contenidos Unidad 3
Parte I: Funciones.Parte II: Arreglos.
Parte III: Entrada y Salida de datos, parte II de II.
Parte IV: Archivos.
Unidad 3
RecordatorioOtras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
59/66
Parte III: Entrada y Salida de datos, parte IIde II.
Unidad 3
RecordatorioOtras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
60/66
Recordatorio
En en Unidad 2, estudiamos como ingresar datos por teclado y
mostrar datos a pantalla, utilizando:
int printf(char *cadena, const char *formato, ...);int scanf(const char *formato, ...);
En este unidad veremos otras funciones utiles para entrada y salidade datos.
Unidad 3
RecordatorioOtras funciones
Generacion de numeros aleatoriosFuncion system(...)Otras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
61/66
Otras funciones
int getchar(void);
lee un caracter del tecladoUtil para la eleccion de algun tem de un menu
int putchar(int c);
imprime un caracter en pantalla.
char *gets(char *cadena);
lee una cadena de caracteres ingresadas por pantalla.
int puts(const char *cadena);imprime en pantalla el argumento, finalizando con un salto delnea.
Unidad 3
RecordatorioOtras funciones
Generacion de numeros aleatoriosFuncion system(...)Otras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
62/66
Generacion de numeros aleatorios
Es posible obtener numero aleatorios mediante la funcionrand().
Esta funcion esta definida en el archivo cabecera Calcula una secuencia de numero enteros pseudo aleatorios enel rango de 0 y RAND MAX (constante definida en la libreriastdlib.h).
Semilla para rand() es posible mediante la funcionsrand(unsigned int semilla)
Ej.: srand( (unsigned int)time( NULL ) );
Unidad 3
RecordatorioOtras funciones
Generacion de numeros aleatoriosFuncion system(...)Otras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
63/66
# i f n d e f u l o n g# d e f i n e u l o n g u ns i gn e d l o ng# e n d i f
. . .u lo ng i n i t A r r a y ( u lo ng a r r a y [ ] , u lo ng s i z e , u lo ng p )
{ i n t i ;f o r ( i = 0 ; i < s i z e ; i ++){
u l o n g uNum = ( u l o n g ) ( ( d o u b l e ) r a n d ( ) / ( ( d o u b l e )RAND MAX+( u l o n g ) 1 ) p ) ;
a r r a y [ i ] = uNum;p r i n t f ( %u\n , uNum ) ;
}}
Unidad 3
RecordatorioOtras funciones
Generacion de numeros aleatoriosFuncion system(...)Otras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
64/66
Funcion system(...)
Permite ejecutar ordenes sobre el S.O.
Depende del sistema operativo sobre el cual se trabaje (para
indicar la orden).Ej.:
Conocer la cantidad de archivos que se encuentran en undeterminado directorio, conocer la fecha del sistema, realizarun ping (para trabajo con sockets). . . etc
La funcion que permite esto es:system(orden);Ej.; system(dir);
Unidad 3
RecordatorioOtras funciones
Generacion de numeros aleatoriosFuncion system(...)Otras funciones
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
65/66
Otras funciones
int atoi(const char *numPtr);
Convierte una cadena a int.
void exit(int estado);
Permite finalizar un programa.
void abort(void);
Genera una salida anormal del programa
Unidad 3
Preguntas
http://find/http://goback/8/3/2019 Programacion en C unidad 03 capitulos 2 y 3
66/66
Preguntas
Unidad 3
http://find/http://goback/