Algoritmo Por Ordenamiento

8
ALGORITMO POR ORDENAMIENTO Algoritmos de ordenamineto Heapsort Es un método de ordenamineto por selección Heap:es un árbol binario de atura minima,en que los nodos del nivel más bajo están más a la izquierda posible La información es almacenada de manera que al recorrer un camino desde la raíz hacia las hojas,os datos se encuentran en orden descendente Si se presenta este arreglo resultante como un árbol se observa que cada elemento es el padre de los otros elementos z[i], z[i+1] puesto que es una estructura con un grupo el cualj<_i/2 En la segunda parte del procedimiento se realiza el proceso de ordenamineto en la cula se recorre el árbol de tal forma que el resultado es una lista ordenada de elementos. Algoritmos de selección del Heap sort El vector debe tener estructura de montículo,es decir un árbolen el que los hijos de cada nodo son siempre menores que el padre De esta forma no se tiene que recorrer toda la zona desordenada para encontrar el elemnto máximo, ya que en este caso la ordenación se realiza en sentido inverso. La estructura es un monticulofacilita esta búsqueda y la hace del orden LOG(N) Por lo tanto el costo final será log(n)para cada elemento que se quiera colocar en la zona ordenada es decir O(n)=nlog(n) Ejemplo:

description

ordenamiento heapsort

Transcript of Algoritmo Por Ordenamiento

ALGORITMO POR ORDENAMIENTOAlgoritmos de ordenamineto HeapsortEs un mtodo de ordenamineto por seleccinHeap:es un rbol binario de atura minima,en que los nodos del nivel ms bajo estn ms a la izquierda posibleLa informacin es almacenada de manera que al recorrer un camino desde la raz hacia las hojas,os datos se encuentran en orden descendenteSi se presenta este arreglo resultante como un rbol se observa que cada elemento es el padre de los otros elementos z[i], z[i+1] puesto que es una estructura con un grupo el cualj A[hijo])) hijo++;while ((hijo A[hijo])) hijo++; A[i] = A[hijo]; i = hijo; hijo = 2 * i; } A[i] = tmp;}void intercambiar (Dato * A, int i, int j) { Dato tmp = A[i]; A[i] = A[j]; A[j] = tmp; }void heapsort (Dato * A, int N) { int i;/* meto los datos en el montculo (ordeno) */ for (i = N / 2; i >= 0; i--) filtrado_desc (A, i, N);/* saco los datos y los meto al final para obtener el array ordenado */ for (i = N - 1; i > 0; i--) {10Algoritmos de ordenacinintercambiar (A, 0, i); filtrado_desc (A, 0, i - 1);}}