Ordenación Por Montículos

download Ordenación Por Montículos

of 8

Transcript of Ordenación Por Montículos

  • 7/25/2019 Ordenacin Por Montculos

    1/8

    UNIVERSIDAD NACIONAL

    DE MOQUEGUA

    Tema: Ordenacin por Montculos (Heapsort)

    Carrera: Ing. De Minas

    Ciclo: 1er. Ciclo

    Curso: Introduccin a la Programacin

    Integrante:

    Condori Aamuro iancarlo

    Mo!uegua " Per#

  • 7/25/2019 Ordenacin Por Montculos

    2/8

    Ordenacin por montculoso Heapsort

    Heapsort

    La estructura de datos heap es un arreglo de objetos que pueden ser vistoscomo un rbol binario completo (solo pueden faltar nodos al nal del ltimonivel).ste algoritmo consiste en almacenar todos los elementos del vector a ordenarden un mont!culo (heap)" # luego e$traer el nodo que queda como nodo ra!% delmont!culo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado.&asa su funcionamiento en una propiedad de los mont!culos" por la cual" lacima contiene siempre al ma#or elemento (o menor" segn sea el caso) detodos los almacenados en el.

    Caractersticas

    ' s un algoritmo que se constru#e utili%ando las propiedades de los mont!culosbinarios.' l orden de ejecucin para el peor caso es (*+log(*))" siendo * el tama,o dela entrada.' -unque tericamente es ms rpido que los algoritmos de ordenacin vistoshasta aqu!" en la prctica es ms lento que el algoritmo de ordenacin de hellutili%ando la secuencia de incrementos de edge/ic0.

    Definicin de un montculo

    1ecimos que un rbol binario satisface la condicin de montculosi cadapadre es ma#or que sus hijos. - diferencia de los rboles binarios ordenados"no ha# ninguna condicin que relacione a los hijos de un mismo padre (nimucho menos a los de padres distintos). 2inalmente" diremos que un rbolbinario es un montculosi satisface la condicin de mont!culo #" adems" esun rbol binario completo" es decir" todos los niveles del rbol (e$cepto tal ve%el ltimo) estn repletos" # en el ltimo nivel todos los hijos estn acumuladosdel mismo lado (digamos a la i%quierda).

    -s!" de los siguientes rboles binarios" el primero no satisface la condicin demont!culo" el segundo no es completo # el tercero s! es un mont!culo.

  • 7/25/2019 Ordenacin Por Montculos

    3/8

    rbol binario completo

    s una estructura de datosen la cual cada nodo siempre tiene un hijo i%quierdo# un hijo derecho.*o pueden tener ms de dos hijos (de ah! el nombre 3binario3)

    Breve repaso de las propiedades de los montculos binarios(eaps!"

    4ecordemos que un mont!culo 5a$ es un rbol binario completo cu#oselementos estn ordenados del siguiente modo6 para cada subrbol se cumpleque la ra!% es ma#or que ambos hijos. i el mont!culo fuera 5in" la ra!% de cadasubrbol tiene que cumplir con ser menor que sus hijos.

    4ecordamos que" si bien un mont!culo se dene como un rbol" pararepresentar 7ste se utili%a un arra# de datos" en el que se acceden a padres ehijos utili%ando las siguientes transformaciones sobre sus !ndices. i elmont!culo est almacenado en el arra# -" el padre de -8i9 es - 8i:;9 (truncandohacia abajo)" el hijo i%quierdo de -8i9 es - 8;

  • 7/25/2019 Ordenacin Por Montculos

    4/8

    - grandes rasgos el algoritmo de ordenacin por mont!culos consiste en metertodos los elementos del arra# de datos en un mont!culo 5-@" # luego reali%ar *veces eliminar Max (). 1e este modo" la secuencia de elementos eliminadosnos ser entregada en orden decreciente.

    Im!lementacin !r"ctica del aloritmo

    $isten dos ra%ones por las que la estrategia general debe ser renada6 el usode un tad au$iliar (mont!culo binario) lo cual podr!a implicar demasiado cdigopara un simple algoritmo de ordenacin" # la necesidad de memoria adicionalpara el mont!culo # para una posible copia del arra#. stas cosas tambi7nimplican un gasto en velocidad.

    Lo que se hace es reducir el cdigo al m$imo reduci7ndose lo ms posible laabstraccin a un mont!culo. Arimero que nada" dado el arra# de datos" este noes copiado a un mont!culo (insertando cada elemento). Lo que se hace es" acada elemento de la mitad superior del arra# (posiciones B">"..." *:;) se leaplica un ltrado descendente (se 3baja3 el elemento por el rbol binario hastaque tenga dos hijos que cumplan con el orden del mont!culo. sto bastar parahacer que el arra# cumpla con ser un mont!culo binario.

    *otamos tambi7n que al hacer un eliminar 5a$ () se elimina el primerelemento del arra#" se libera un lugar a lo ltimo de este. Aodemos usar estopara no tener que hacer una copia del arra# para meter las eliminacionessucesivas. Lo que hacemos es meter la salida de eliminar 5a$ () luego delltimo elemento del mont!culo. sto hace que luego de *C> eliminar 5a$ ()" elarra# quede ordenado de menor a ma#or.

    Aara ahorrar cdigo queremos lograr insertar # eliminar 5a$ () con una sola

    rutina de ltrado descendente. Da e$plicamos cmo hacer que el arra# de datos- preserve el orden de los elementos de un mont!culo. Lo que hacemos paraordenarlo usando slo la rutina de ltrado descendente es un eliminar 5a$ ()intercambiando el primer elemento del arra# por el ltimo del mont!culo #ltrar el nuevo primer elemento hasta que se respete el orden 5a$. Eui% estoquede ms claro mirando el cdigo.

    Aloritmo de ordenacin !or montculos

    FG Ahp

    2unction ltradoHdesc (I J-" Ji" J*)K:< queremos que se respete el orden 5-@ del mont!culo 9 N J-8Jhijo9))

    Jhijo==MOhile ((Jhijo F J*) II (Jtmp F J- 8Jhijo9)) K

    :< lijo bien el hijo

  • 7/25/2019 Ordenacin Por Montculos

    5/8

  • 7/25/2019 Ordenacin Por Montculos

    6/8

    i

    *o

    Pnicio

    Leer*-

    8 9

    2or6 i *:;M iN BMPCC

    ?mp - 8P9WPX ; < i

    Wijo F *

    - 8hijo = >9 N -8hijo9

    (Wijo F *) Y- 8hijo = >9 N -8hijo9

    - 8i9 Z - 8hijo9P Z hijo

    Wijo Z ; < i

    - 8i9 Z tmp

    2or6 i Z n [ >M i NBM i CCC

    ?mp - 8 B 9- 8 B 9 - 8 i 9- 8 i 9 tmp?mp - 8 B 9Wijo ; < BWijo F i [ >- 8 hijo9 = > N -

    8hijo9

    Wijo F i [ >Y

    ?mp F -8 hijo 9

    Wijo F *?mp F -

    8hijo9

    Wijo ==

    Wijo ==

  • 7/25/2019 Ordenacin Por Montculos

    7/8

    i

    *o

    si

    *o(Wijo F i [ B) Y - 8hijo =>9N - 8hijo9

    - 8B9 Z- 8hijo9B Z hijo

    Wijo Z ; < B

    - 8B9 Z tmp

    P Z BM i F*M i ==

    - 8i9

    2in

    ?mp Z - 8B9- 8B9 Z - 8i9- 8i9 Z tmp

    ?mp Z- 8B9

    Wijo Z ;9

    N-8hijo9

    Wijo F i C>Y

    ?mp F -8hijo9

    Wijo ==

    Wijo ==

  • 7/25/2019 Ordenacin Por Montculos

    8/8