Sei sulla pagina 1di 66

INC-112 Programacin I o Unidad 3

Profesores: Eliana Providel - Roberto Muoz S. n Escuela de Ing. Civil Informtica, a Universidad de Valpara so
{eliana.providel,roberto.munoz.s}@uv.cl

Segundo Semestre 2011

Unidad 3

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

Parte II: Arreglos

Unidad 3

Contenidos
Qu son?. e Arreglos Unidimensionales. Arreglos Bidimensionales y Multidimensionales. Caracter sticas generales. Arreglos de caracteres. Arreglos y funciones. Ordenamiento. Bsqueda. u

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Qu son? e

Son un conjunto nito de datos del mismo tipo. Se agrupan bajo un mismo nombre. Su almacenamiento en memoria es contigua.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin o Inicializacin o Utilizacin o

Declaracin de un arreglo o
Declaracin o tipo dato nombre arreglo [tamao]; n tipo dato: puede ser char, int,... nombre arreglo: nombre que se le dar al arreglo. a tamao: constante que especica el numero de elementos del n array. Ej: int arreglo[10];

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin o Inicializacin o Utilizacin o

Inicializacin de un arreglos o

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 posicin del arreglo: o


arreglo1[3]=7;

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin o Inicializacin o Utilizacin o

Utilizacin de los valores del arreglo o

Para acceder a los datos del arreglo, se utiliza un ndice, el nombre del arreglo, y los [ ]. El ndice para la primera posicin es 0. o Ej.
1 2

int arreglo[4] = {4, 2, 3, 6}; Al acceder a arreglo[4]; error!!!


El primer elemento del arreglo est en la posicin 0. a o El ultimo elemento esta en la posicin 3. o

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin o Inicializacin o Utilizacin o

Declaracin o
Declaracin o tipo dato nombre[tamao][tamao]...; n n tipo dato: tipo de dato a almacenar. nombre: Nombre del arreglo. tamao: tamao de la dimensin del arreglo. n n o Para cada nueva dimensin se debe agregar un nuevo [ ] o Ejemplos:
1 2

int arreglo[2][4]; int arreglo[2][4][3][1];


Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin o Inicializacin o Utilizacin o

Inicializacin del arreglo o

int arreglo1[2][3]= {{1,2},{3,4,5}}; int arreglo1[][3]= {{1,2,3},{3,4,5}};

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin o Inicializacin o Utilizacin o

Utilizacin de los datos del arreglo o


Para acceder al arreglo se utiliza el nombre del arreglo, el ndice (para indicar la posicin en el arreglo) y los [ ]. o No olvidar colocar ; al nal. Ej. int arreglo[2][3][4][5][3]; La primera posicin del arreglo ser o a
1

arreglo[0][0][0][0][0]; arreglo[1][2][3][4][2];

La ultima posicin del arreglo ser o a


1

arreglo[2][3][4][5][3]; Error!! Uso correcto para acceder a un dato: arreglo[1][1]; Uso incorrecto: arreglo[1,1]
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Manejo de Indices

Caracter sticas Generales


C no chequea l mites de un arreglo, por lo que es muy fcil a acceder a un espacio de memoria que no esta reservado. Es tarea del programador!! Para denir el tamao de un arreglo se pueden utilizar n constantes o expresiones de constantes, pero siempre deben ser un entero. Un ndice para acceder a un elemento de un arreglo, puedo ser una constante, una variable o una expresin. o

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Manejo de Indices

Manejo de Indices

Utilizando dene para los l mites del arreglo. Ejemplo #define MAX 100 ... int arreglo[4][MAX]; int arreglo[4][MAX-1];

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Manejo de Indices

Manejo de Indices
Ejemplo: ... int arreglo[2][3]={{3,4},{5,1,2}}; for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("arreglo %d \n", arreglo[i][j]); } ...

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Manejo de Indices

Manejo de Indices

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin e inicializacin o o printf(...) y scanf(...)

Arreglo de caracteres

Permiten manejar un conjunto de caracteres o s mbolos bajo un mismo nombre. La terminacin de la cadena se identica con nulo, que es o especicado por \0.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin e inicializacin o o printf(...) y scanf(...)

Declaracin e inicializacin del arreglo o o


Es anlogo a los arreglos nmericos, slo que ahora se utilizan y a u o . Ejemplo: ... char char char char ...

arreglo[4]; arreglo[4]= "hola"; arreglo[]= "hola"; arreglo[4]={h,o,l,a};

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin e inicializacin o o printf(...) y scanf(...)

printf(...) y scanf(...) en arreglo de caracteres

Se puede recibir la entrada estndar utilizando la funcin a o scanf con el formato %s. De igual forma para printf. De esta forma se recibe y muestra todo el arreglo.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Declaracin e inicializacin o o printf(...) 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

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Arreglos Unidimensionales Arreglos Multidimensionales

Arreglos y funciones

Al pasar un arreglo como argumento a una funcin se pasa o solo el nombre del arreglo.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Arreglos Unidimensionales Arreglos 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

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Arreglos Unidimensionales Arreglos Multidimensionales

Qu hace el programa? e
1

Cuando se declara la funcin, se indica que recibir un o a arreglos: void inv(char s[]) { ... }

Cuando se llama a la funcin, se le pasa el nombre del arreglo. o char inf[]="Programacin I"; o inv(inf );

Luego la funcin inv(...) recorre el arreglo desde la ultima o posicin y va mostrando el contenido. o
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Arreglos Unidimensionales Arreglos Multidimensionales

Utilizacin de arreglos multidimensionales o

Para arreglos multidimensionales, en los argumentos de la funcin, no se indica la primera dimensin pero s todas las o o dems. a Al llamar a la funcin se pasa como parametro o argumento el o nombre del arreglo. Para retornar el arreglos se retorna slo el nombre del arreglo. o

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Arreglos Unidimensionales Arreglos Multidimensionales

Ejemplo: #DEFINE MAX 2 int arreglo[MAX][MAX]={{1,2},{6,7}} ; int funcion(int arr[][MAX]) { inti,j; for(i=0;i<MAX;i++) for(j=0;j<MAX;j++) printf("\narreglo i:%d j :%d %d ",i,j,arr[i ][j]); return arr; } int main(){ arreglo[MAX][MAX]=funcion(arreglo); return 0; } Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Ordenamiento Burbuja

Para empezar, veremos uno de los algoritmos ms simples y a populares... Ordenamiento Burbuja o Bubble Sort. Ordenamiento Burbuja, su nombre proviene del hecho de que los elementos ms livianos (chicos), salgan a ote, a mientras que los ms pesados (grandes) se hundan. a

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Ordenamiento Burbuja

Ejemplo: 15 8 4 50 3

Si el elemento de abajo es ms pequeo se cambian los valores de a n posicin y se contina con el siguiente nmero. Luego que termina o u u de dar el primer recorrido al arreglo, comienza de nuevo desde el principio, pero el elemento ms pesado ya qued al fondo, por lo a o tanto, ahora se comparan slo los primeros N-1 elementos. o

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Ordenamiento Burbuja

15 8 4 50 3

8 15 4 50 3

8 4 15 50 3

8 4 15 50 3

8 4 15 3 50

8 4 15 3 50

4 8 15 3 50

4 8 15 3 50

4 8 3 15 50

4 8 3 15 50

4 8 3 15 50

4 3 8 15 50

3 4 8 15 50

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Ordenamiento Burbuja
void bubble(int a[], int n) { int i,j; for (i=n-1;i>0;i--) for (j=0;j<=i-1;j++) if (a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } }
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Ordenamiento Burbuja
Otra forma: void bubble(int a[], int n) { int i,j; for (i=0;i<n-1;i++) for (j=n-1;j>i;j--) if (a[j] < a[j-1]) { temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; } }
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick 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 un conjunto ordenado. Despus, cuando hay k elementos e ordenados de menor a mayor, se toma el elemento k + 1 y se compara con todos los elementos ya ordenados, detenindose e cuando se encuentra un elemento mayor. En este punto se inserta el elemento k + 1 debiendo desplazar los dems a elementos.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Insertion Sort II
Ejemplo: El elemento k + 1 se va comparndo de atrs para adelante, a a detenindose con el primer elemento menor. Simultneamente a a se van haciendo los desplazamientos. 11 26 47 59 96 32 11 26 47 59 96 11 26 47 59 96 11 26 47 59 96 11 26 32 47 59 96

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Insertion Sort III


Algoritmo 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

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Insertion Sort IV
j = j - 1; } x[j] = tmp; } }

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Insertion Sort V
Insertion 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 ) { int 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

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Insertion Sort VI

} } }

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Selection Sort I
El Ordenamiento por Seleccin (Selection Sort) es un o algoritmo de ordenamiento, funciona de la siguiente forma:
Buscar el m nimo elemento de la lista. Intercambiarlo con el primero. Buscar el m nimo en el resto de la lista. Intercambiarlo con el segundo. y as sucesivamente...

Es decir:
Buscar el m nimo elemento entre una posicin i y el nal de la o lista. Intercambia el m nimo con el elemento de la posicin i. o
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Selection Sort II

Ejemplo: 31 11 11 11 11 25 25 12 12 12 12 12 25 22 22 22 22 22 25 25 11 31 31 31 31

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Selection Sort III


v 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 < n 1; 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

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort I
Primero que todo se debe mencionar que Quick Sort ocupa la estrategia de Divide y Vencers, la cual consiste en: a
Separa el problema en instancias ms pequeas: Fase de a n particin, divide el trabajop por la mitad o Combina las pequeas soluciones en una solucin del problema n o mayor: Fase de Ordenamiento, conquista las mitades!

Cmo opera?: o
Se elige uno de los elementos del arreglo como pivote. Luego se particionar el arreglo en dos arreglos AL y AR , en donde AL contiene todos los elementos menores que el pivote, y AR todos los mayores al pivote.
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort II

Y as recursivamente, por lo tanto lo que devuelve el algoritmo es Quicksort(AL ) + pivote + Quicksort(AR ).

Ejemplo:

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort III

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort IV
v o i d q u i c k s o r t ( i n t a , i n t L , i n t R) { int pivote , nuevoPivote ; i f ( L>=R ) return ; pivote = e l e g i r P i v o t e (a , L ,R); nuevoPivote = p a r t i c i o n a r (a , L , R, pivote ) ; quicksort (a , L , nuevoPivote 1); quicksort (a , nuevoPivote + 1 , R) ; }

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort V

Ejemplo del algoritmo de particionamiento

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort VI

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort VII


v 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 ) { int 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 <j ) { w h i l e ( a [ i ] < v a l o r P i v o t e ) i ++; w h i l e ( a [ j ] > v a l o r P i v o t e ) j ; i f ( i <j ) INTERCAMBIAR( a [ i ] , a [ j ] ) ; } INTERCAMBIAR( a [ p i v o t e ] , a [ i ] ) ; return i ; }

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort VIII


El caso de la eleccin del Pivote: o
Una eleccin simple de un pivote ser algo as como: o a
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) { return L ; }

Si bien es un algoritmo sencill simo, es el que ms se ocupa en a trminos generales, elegir el primer elemento, o el ultimo como e pivote. Una buena idea es elegir el pivote al azar

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort IX
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) { i n t b=RAND()%(RL +1); r e t u r n L+b ; }

Sin embargo, el costo de generar nmeros aleatorios es caro, lo u cual no conviene mucho. Lo ideal ser que el pivote fuese la mediana de los valores (de a modo que AL y AR sean del mismo tamao). n Una forma de aproximar es tomar la mediana de tres valores. Por ejemplo, mirar el que est en L, el que est en R, y el que a a est en la mitad, y escoger el que sea intermedio entre esos a tres.
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Ordenamiento Burbuja Insertion Sort Selection Sort Quick Sort

Quick Sort X
i n t e l e g i r P i v o t e ( i n t a , { i n t M = (R + L ) / 2 ; i f ( a [M] < a [ L ] ) INTERCAMBIA( a [M] i f (a [R] < a [ L ] ) INTERCAMBIA( a [ R ] i f ( a [ R]<a [M] ) INTERCAMBIA( a [ R ] r e t u r n M; } i n t L , i n t R)

,a[L]); ,a[L ]); , a [M] ) ;

Cuando los arreglos son pequeos (largo < 10), conviene n pasar a un algoritmo simple como Insertion Sort.
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Generalidades

Existen diferentes alternativas para buscar un elemento dentro de un arreglo. Algunos entregan un resultado con mayor eciencia. Algoritmos:
Bsqueda secuencial u Bsqueda binaria u

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Bsqueda Secuencial u

Recorre el arreglo comparando cada posicin con el dato que o se desea buscar. Su eciencia depender de la posicin en la que encuentre el a o dato a buscar, ya que el peor caso es que est al nal o no lo e encuentre.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Cdigo o

int search(int vector[], int N, int dato) { int i; int pos = -1; for (i=0; i<N; i++) if (vector[i]==dato)pos = i; return pos; }

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Bsqueda Secuencial u

Retorna la posicin en la que encontr el dato. o o Si no lo encuentra retorna -1.

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Bsqueda Binaria, Generalidades u


Para el correcto funcionamiento del algoritmo el arreglo debe estar ordenado. Idea del argortimo: Se compara el dato con el elemento del centro del arreglo. Si son iguales se encontr. o 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

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Ejemplo

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Ejemplo

Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

int binSearch (double vector[], int N, double buscado){ int izq = 0; int der = N-1; int centro = (izq+der)/2; while ((izq<=der) && (vector[centro]!=buscado)) { if(buscado<vector[centro]) der = centro - 1; else izq = centro + 1; centro = (izq+der)/2;} if (izq>der)return -1; else return centro; }
Unidad 3

Qu son? e Arreglos Unidimensionales Arreglos Bidimensionales y Multidimensionales Caracter sticas Generales Arreglos de caracteres Arreglos y funciones Ordenamiento Busqueda

Generalidades Bsqueda Secuencial u Bsqueda Binaria u

Ejercicio

Cmo seria una implementacin del algoritmo utilizando o o recursividad?

Unidad 3

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

Recordatorio Otras funciones

Parte III: Entrada y Salida de datos, parte II de II.

Unidad 3

Recordatorio Otras funciones

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 salida de datos.

Unidad 3

Recordatorio Otras funciones

Generacin de nmeros aleatorios o u Funcin system(...) o Otras funciones

Otras funciones
int getchar(void);
lee un carcter del teclado a Util para la eleccin de algn o u tem de un men u

int putchar(int c);


imprime un carcter en pantalla. a

char *gets(char *cadena);


lee una cadena de caracteres ingresadas por pantalla.

int puts(const char *cadena);


imprime en pantalla el argumento, nalizando con un salto de l nea.

Unidad 3

Recordatorio Otras funciones

Generacin de nmeros aleatorios o u Funcin system(...) o Otras funciones

Generacin de nmeros aleatorios o u


Es posible obtener numero aleatorios mediante la funcin o rand(). Esta funcin esta denida en el archivo cabecera <stdlib.h> o Calcula una secuencia de numero enteros pseudo aleatorios en el rango de 0 y RAND MAX (constante denida en la libreria stdlib.h). Semilla para rand() es posible mediante la funcin o srand(unsigned int semilla) Ej.: srand( (unsigned int)time( NULL ) );

Unidad 3

Recordatorio Otras funciones

Generacin de nmeros aleatorios o u Funcin system(...) o Otras funciones

#i f n d e f u l o n g #d e f i n e u l o n g u n s i g n e d l o n g #e n d i f ... ulong i n i t A r r a y ( ulong array [ ] , ulong size , ulong p ) { int i ; f o r ( i = 0 ; i < s i z e ; i ++) { u l o n g uNum = ( u l o n g ) ( ( double ) r a n d ( ) / ( ( d ouble )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

Recordatorio Otras funciones

Generacin de nmeros aleatorios o u Funcin system(...) o Otras funciones

Funcin system(...) o
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 un determinado directorio, conocer la fecha del sistema, realizar un ping (para trabajo con sockets). . . etc La funcin que permite esto es: o system(orden); Ej.; system(dir);

Unidad 3

Recordatorio Otras funciones

Generacin de nmeros aleatorios o u Funcin system(...) o Otras funciones

Otras funciones

int atoi(const char *numPtr);


Convierte una cadena a int.

void exit(int estado);


Permite nalizar un programa.

void abort(void);
Genera una salida anormal del programa

Unidad 3

Preguntas

Preguntas

Unidad 3

Potrebbero piacerti anche