Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ordenamiento de arreglos
Algoritmos de ordenamiento
Mtodo de Seleccin
Este algoritmo es sencillo. Consiste en lo siguiente: Buscas el elemento ms pequeo de la lista. Lo intercambias con el elemento ubicado en la primera posicin de la lista. Buscas el segundo elemento ms pequeo de la lista. Lo intercambias con el elemento que ocupa la segunda posicin en la lista. Repites este proceso hasta que hayas ordenado toda la lista.
Ejemplo de seleccin
Lista a ordenar: 4-3-5-2-1 intercambiamos con el 4 y la lista queda as: 1-3-5-2-4 Lo intercambiamos con el elemento en la segunda posicin, es decir el 3. La lista queda as: 1-2-5-3-4 intercambiamos con el 5: 1-2-3-5-4 intercambiamos con el 5: 1-2-3-4-5
pos_menor = Menor (A, TAM, i); temp = A[i]; A[i] = A [pos_menor]; A [pos_menor] = temp;
Mtodo de insercin
Consideremos que en un momento dado, el segmento izquierdo del arreglo est ordenado y el segmento derecho no. Podemos tomar un elemento del segmento derecho e insertarlo en su lugar correcto en el lado izquierdo
Parte ordenada
Parte desordenada
Se considera la lista partida en dos sublistas, una ordenada y la otra para ordenar En el primer paso, la lista ordenada contiene un elemento y la lista por ordenar, TAM-1, Se van extrayendo uno a uno los elementos de la lista desordenada y se colocan en la sublista ordenada, mediante comparaciones sucesivas, hasta encontrar la posicin correcta, El proceso contina hasta que la lista desordenada queda vaca.
Ejemplo de insercin 8 12 4 9 3 8 12 4 9 3 4 8 12 9 3 4 8 9 12 3 3 4 8 9 12
Mtodo de la burbuja
Supongamos que tenemos una funcin flota() que flota el elemento ms grande hasta el final del arreglo. Ejemplo: int a[] = {8, 12, 4, 9, 3 }; flota(a);
8 4 9 3 12
Mtodo de la burbuja
8 12 4 9 3
8 4 9 3 12 8 4 3 9 12
4 3 8 9 12
3 4 8 9 12
Mtodo de la burbuja
for(i=N-1; i>0; i--) flota(a);
El mtodo flota
/* dado un arreglo y un ndice i, colocar en la posicin i el elemento ms grande que exista entre a[0] y a[i] flota: arreglo, indice->void */ void flota(int a[], int i) { ... }
Flotacin
8 12 4 9 3 8 12 4 9 3 8 4 12 9 3
8 4 9 12 3
8 4 9 3 12
Flotacin
Public void flota(int a[], int i) {int j; for(j=0; j < i; j++) if(a[j]>a[j+1]) intercambia(a[j], a[j+1]); }
Intercambio
Public void intercambia(int x, int y) {int t; t = x; x = y; y = t; }
Mtodo de la burbuja
void burbuja(int a[], int N) { int i; for(i=N-1; i>0; i--) flota(a, i); } void flota(int a[], int i) Public void burbuja(int a[], int N) { int i, j; for(i=N-1; i>0; i--) for(j=0; j < i; j++) if(a[j]>a[j+1]) intercambia(a[j], a[j+1]); }
Quick Sort
Inventado por C. A. R. Hoare Se escoje un elemento del arreglo como pivote Se particiona el arreglo en dos subarreglos: uno contiene aquellos elementos menores que el pivote, el otro contiene los mayores Se ordenan los subarreglos. Se obtiene el arreglo ordenado uniendo de nuevo los subconjuntos ordenados y el pivote.
Ligas
Ordenamiento de burbuja http://olli.informatik.uni-oldenburg.de/fpsort/Animation.html Ordenamiento por Selecin http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS210/sorting.html Ordenamiento por Quick Sort http://olli.informatik.unioldenburg.de/fpsort/QuickAnimation.html http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS210/Java/q _sort/tqs_new.html http://c.conclase.net/orden/quicksort.html Explicacin paso a paso del ordenamiento Quick Sort http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sorting II/quickSort/quickSort.html Diferentes ejemplos http://www.cse.iitk.ac.in/users/dsrkg/cs210/html/sortingpa ge.html
Comparacin de algoritmos
Nmero de elementos Seleccin con listas Seleccin con arreglos Burbuja con arreglos Quicksort con colas Quicksort con arreglos
100
103 miliseg.
4 miliseg.
6 miliseg.
29 miliseg.
2 miliseg.
500
86 miliseg.
165 miliseg.
9 miliseg.
1000
0.3 seg.
0.7 seg.
18 miliseg.
2000
121 seg.
1.4 seg.
2.6 seg.
1.5 seg.
43 miliseg.
100000
ms de 3 das
1 hora
2 horas
15 min.
3.4 seg.