Ordenación, Clasificación
description
Transcript of Ordenación, Clasificación
![Page 1: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/1.jpg)
1
Ordenación, Clasificación
• Introducción
• Algoritmos
• Complejidad
![Page 2: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/2.jpg)
2
Introducción
• Ordenación o clasificación es el proceso de reordenar un conjunto de objetos en un orden específico. El propósito de la ordenación es facilitar la búsqueda de elementos en el conjunto ordenado.
• Existen muchos algoritmos de ordenación, siendo la diferencia entre ellos las ventajas de unos sobre otros en la eficiencia en tiempo de ejecución.
![Page 3: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/3.jpg)
3
Introducción
• Los métodos de ordenación se pueden clasificar en dos categorías:
– ordenación de ficheros y – ordenación de arrays. También suele llamarse ordenamiento externo e interno, debido a que los ficheros se guardan en la memoria externa (lenta) mientras que los arrays se almacenan en la memoria rápida del ordenador (interna). En esta sección sólo se aborda el ordenamiento interno.
![Page 4: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/4.jpg)
4
Introducción
• El problema del ordenamiento puede establecerse mediante la siguiente ación:
Dados los elementos:
Ordenar consiste en permutar esos elementos en un orden:
tal que dada una función de ordenamiento f:nkkk aaa ,,,
21
)()()(21 nkkk afafaf
naaa ,,, 21
![Page 5: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/5.jpg)
5
Introducción• Normalmente, la función de ordenamiento no es evaluada
de acuerdo a una regla de computación determinada, pero se guarda como un componente explícito (campo) de cada item (elemento). El valor de ese campo se llama la llave del item.
• Un método de ordenamiento es estable si el orden relativo de elementos con igual llave permanece inalterado por el proceso de ordenamiento.
• Se entiende que los métodos de ordenamiento buscan un uso eficiente de la memoria por lo que las permutaciones de elementos se hará in situ, es decir, usando el mismo contenedor original.
![Page 6: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/6.jpg)
6
Introducción
• En lo que sigue se considera que la estructura lineal (array, lista, vector o secuencia) a ordenar se representa por un array de objetos (números enteros):
int a[ ] = new int[MAX];• siendo MAX el número máximo de elementos del
array. El orden de los elementos después de la ordenación se considera ascendente.
![Page 7: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/7.jpg)
7
Algoritmo burbuja
• Es un método caracterizado por la comparación e intercambio de pares de elementos hasta que todos los elementos estén ordenados.
• En cada iteración se coloca el elemento más pequeño (orden ascendente) en su lugar correcto, cambiándose además la posición de los demás elementos del array.
![Page 8: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/8.jpg)
8
Algoritmo burbuja
Datosoriginales 1ª iter. 2ª 3ª 4ª36 6 6 6 624 36 10 10 1010 24 36 12 126 10 24 36 2412 12 12 24 36
![Page 9: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/9.jpg)
9
Algoritmo burbuja
Datosoriginales 1ª iter. 2ª 3ª 4ª36 6 6 6 624 36 10 10 1010 24 36 12 126 10 24 36 2412 12 12 24 36
![Page 10: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/10.jpg)
10
Algoritmo burbuja
Datosoriginales 1ª iter. 2ª 3ª 4ª36 6 6 6 624 36 10 10 1010 24 36 12 126 10 24 36 2412 12 12 24 36
![Page 11: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/11.jpg)
11
Algoritmo burbuja
Datosoriginales 1ª iter. 2ª 3ª 4ª36 6 6 6 624 36 10 10 1010 24 36 12 126 10 24 36 2412 12 12 24 36
![Page 12: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/12.jpg)
12
Algoritmo burbuja
Datosoriginales 1ª iter. 2ª 3ª 4ª36 6 6 6 624 36 10 10 1010 24 36 12 126 10 24 36 2412 12 12 24 36
![Page 13: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/13.jpg)
13
Algoritmo burbuja
for(i=n;i>0;i--) for(j=0;j<i-1;j++) if (a[j] > a[j+1]) { t=a[j]; a[j] = a[j+1]; a[j+1]=t; ninterc++; }
![Page 14: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/14.jpg)
14
Algoritmo sacudida (shakesort)
• Es una mejora del algoritmo de burbuja en el que se registra la ocurrencia de un intercambio y el índice del último intercambio y se alterna la dirección de las pasadas consecutivas. Con ello una burbuja liviana en el lado “pesado” y una pesada en el lado “liviano” quedarán en orden en una pasada simple.
![Page 15: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/15.jpg)
15
Algoritmo sacudida (shakesort) l=1; r=n-1; k=n-1; do { for(j=r; j>=l; j--) if (a[j-1]>a[j]) { t=a[j-1]; a[j-1] = a[j]; a[j]=t; k=j; ninterc++; }
l=k+1; for(j=l; j<=r; j++) if (a[j-1]>a[j]) { t=a[j-1]; a[j-1] = a[j]; a[j]=t; k=j; ninterc++; } r=k-1; } while (l<r);
![Page 16: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/16.jpg)
16
Algoritmo inserción
• Este método es usado por los jugadores de cartas. Los elementos están divididos conceptualmente en una secuencia destino y una secuencia fuente . En cada paso, comenzando con i=2 e incrementando i en uno, el elemento i-ésimo de la secuencia fuente se toma y se transfiere a la secuencia destino insertándolo en el lugar adecuado.
• En otras palabras, en el i-ésimo paso insertamos el i-ésimo elemento a[i] en su lugar correcto entre a[1], a[2],…., a[i-1], que fueron colocados en orden previamente.
![Page 17: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/17.jpg)
17
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 18: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/18.jpg)
18
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 19: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/19.jpg)
19
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 20: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/20.jpg)
20
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 21: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/21.jpg)
21
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 22: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/22.jpg)
22
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 23: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/23.jpg)
23
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 24: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/24.jpg)
24
Algoritmo inserción
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 44 55 12 42 94 18 06 67i=3 12 44 55 42 94 18 06 67i=4 12 42 44 55 94 18 06 67i=5 12 42 44 55 94 18 06 67i=6 12 18 42 44 55 94 06 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 25: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/25.jpg)
25
Algoritmo inserción for(i=1;i<n;i++) { j=i-1; t=a[i]; while (j>=0 && t<a[j]) { a[j+1] = a[j]; j=j-1; } a[j+1]=t; }
![Page 26: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/26.jpg)
26
Algoritmo selección
• En éste método, en el i-ésimo paso seleccionamos el elemento con la llave de menor valor, entre a[i],…, a[n] y lo intercambiamos con a[i]. Como resultado, después de i pasadas, el i-ésimo elemento menor ocupará a[1],…, a[i] en el lugar ordenado.
![Page 27: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/27.jpg)
27
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 28: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/28.jpg)
28
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 29: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/29.jpg)
29
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 30: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/30.jpg)
30
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 31: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/31.jpg)
31
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 32: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/32.jpg)
32
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 33: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/33.jpg)
33
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 34: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/34.jpg)
34
Algoritmo selección
Arrayoriginal: 44 55 12 42 94 18 06 67i=2 06 55 12 42 94 18 44 67i=3 06 12 55 42 94 18 44 67i=4 06 12 18 42 94 55 44 67i=5 06 12 18 42 94 55 44 67i=6 06 12 18 42 44 55 94 67i=7 06 12 18 42 44 55 94 67i=8 06 12 18 42 44 55 67 94
![Page 35: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/35.jpg)
35
Algoritmo selección for(i=0;i<n-1;i++) { k=i; t=a[i]; for (j=i+1; j<n; j++) { if (a[j] < t) { t= a[j]; k=j; } a[k]= a[i]; a[i]= t; } }
![Page 36: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/36.jpg)
36
Algoritmo rápido (Quicksort)• La ordenación rápida se basa en el hecho que los
intercambios deben ser realizados preferentemente sobre distancias grandes.
• El algoritmo a seguir es el mismo que se aplica cuando se quiere ordenar un gran montón de exámenes:
– Seleccionar un valor de división (L por ejemplo) y dividir el montón en dos pilas, A-L y M-Z. Después se toma la primera pila y se subdivide en dos, A-F y G-L por ejemplo. A su vez la pila A-F puede subdividirse en A-C y D-F. Este proceso continúa hasta que las pilas sean suficientemente pequeñas para ordenarlas fácilmente. El mismo proceso se aplica a la otra pila.
![Page 37: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/37.jpg)
37
Algoritmo rápido (Quicksort)
• En este caso se toma un elemento x del array (el del medio por ejemplo), se busca en el array desde la izquierda hasta que >x, lo mismo se hace desde la derecha hasta encontrar <x.
• Después se intercambia esos elementos y se continúa ese proceso hasta que los índices se encuentren en la mitad del array. Se aplica el mismo proceso para la porción izquierda del array entre el extremo izquierdo y el índice derecho y para la porción derecha entre el extremo derecho y el último índice izquierdo.
![Page 38: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/38.jpg)
38
Algoritmo rápido (Quicksort)• Descripción del algoritmo:1) Dividir : Si la secuencia S tiene 2 o más elementos,
seleccionar un elemento x de S como pivote. Cualquier elemento arbitrario, como el último, puede servir. Elimiar los elementos de S dividiéndolos en 3 secuencias:L, contiene los elementos de S menores que xE, contiene los elementos de S iguales a xG, contiene los elementos de S mayores que x
2) Recursión: De forma recursiva ordenar L y G3) Vencer: Finalmente, colocar nuevamente los elementos en S
en orden, primero insertar los elementos de L, después E, y los elementos de G.
![Page 39: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/39.jpg)
39
Idea de Quick Sort
1) Selección: tomar un elemento
2) Dividir: reordenar los elementos tal que x va a su posición final E
3) Recursión y Vencer: ordenar recursivamente
![Page 40: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/40.jpg)
40
Arbol Quicksort
![Page 41: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/41.jpg)
41
Arbol Quicksort
![Page 42: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/42.jpg)
42
Arbol Quicksort
![Page 43: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/43.jpg)
43
Arbol Quicksort
![Page 44: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/44.jpg)
44
Arbol Quicksort
![Page 45: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/45.jpg)
45
Arbol Quicksort
![Page 46: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/46.jpg)
46
Arbol Quicksort
![Page 47: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/47.jpg)
47
Arbol Quicksort
![Page 48: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/48.jpg)
48
Arbol Quicksort
![Page 49: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/49.jpg)
49
Arbol Quicksort
![Page 50: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/50.jpg)
50
Arbol Quicksort
![Page 51: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/51.jpg)
51
Arbol Quicksort
![Page 52: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/52.jpg)
52
... Arbol Quicksort (final)
![Page 53: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/53.jpg)
53
Quicksort In-PlacePaso Dividir: l recorre la secuencia desde la izquierda, y r desde la derecha
Se realiza un intercambio cuando l está en un elemento mayor que el pivote y r está en uno menor al pivote.
![Page 54: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/54.jpg)
54
In Place Quick Sort (contd.)
Un intercambio con el pivote completa el paso dividir cuando r < l
![Page 55: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/55.jpg)
55
Algoritmo rápido (Quicksort)
void qsort(int izq, int der, int a[])
{ int i, ult, m, tmp;
if (izq >= der) return; tmp= a[izq]; m= (izq+der)/2; a[izq]= a[m]; a[m]=tmp; ult=izq;
for (i=izq+1;i<=der;i++) if (a[i] < a[izq]) { tmp= a[++ult]; a[ult]= a[i]; a[i]=tmp; } tmp= a[izq]; a[izq]= a[ult]; a[ult]=tmp; qsort(izq,ult-1,a); qsort(ult+1,der,a);}
![Page 56: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/56.jpg)
56
Ordenación directa por base (radix sort)
• A diferencia de otros métodos, radix sort considera la estructura de las llaves.
• Se asume que las llaves están representadas en un sistema de numeración M (M=radix), e.g., si M=2, las llaves están representadas en binario.
• Toma ventaja de la posición de cada dígito individual en la clave. Hay dos versiones de la ordenación radix: MSD (most significant digit), LSD (least significant digit).
• La ordenación se realiza comparando los bits en cada posición.
![Page 57: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/57.jpg)
57
Ejemplo Radix sort
Conjunto a ordenar: { 33, 60, 5, 15, 25, 12, 45, 70, 35, 7}
frente colacola_digitos[0] 60 70cola_digitos[1]cola_digitos[2] 12cola_digitos[3] 33cola_digitos[4]cola_digitos[5] 5 15 25 45 35cola_digitos[6]cola_digitos[7] 7cola_digitos[8]cola_digitos[9]
![Page 58: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/58.jpg)
58
Ejemplo Radix sort
Conjunto a ordenar: { 33, 60, 5, 15, 25, 12, 45, 70, 35, 7}
frente colacola_digitos[0] 05 07cola_digitos[1] 12cola_digitos[2] 25cola_digitos[3] 33 35cola_digitos[4]cola_digitos[5] 45cola_digitos[6] 60cola_digitos[7] 70cola_digitos[8]cola_digitos[9]
![Page 59: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/59.jpg)
59
Radix sort directo
Se examinan los bits de derecha a izquierda
for k=0 to b-1 ordenar el array de forma estable tomando solo el bit k
![Page 60: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/60.jpg)
60
Radix sort en enteros
La ordenación resultante es estable:
![Page 61: Ordenación, Clasificación](https://reader035.fdocument.pub/reader035/viewer/2022062218/56813a97550346895da2906f/html5/thumbnails/61.jpg)
61
Análisis de Tiempo de Ejecución
• Los algoritmos de burbuja, inserción, selección corren en O(n2).
• El algoritmo quicksort, montones corren en O(nlogn)• El algoritmo radix sort es O(n)