Estructura de Datos : Clasificación HeapSort


Definiciones

   Archivo, Registros y Claves

              R1   R2   R3             Ri             Rn
   ........------------------.......--------.......--------.......
            | K1 | K2 | K3 |         | Ki |         | Kn |              n slots       Input File
   ........------------------.......--------.......--------.......


   Reglas de ubicacion de padres e hijos en la representacion secuecial de arboles

                Np                  Ni             Nl   Nr              Ni ( Nodo )               i
   ..........--------............--------.......------------......      Nl ( Nodo hijo left )     2 * i
              |    |              |    |         |    |    |            Nr ( Nodo hijo right )    2 * i + 1
   ..........--------............--------.......------------......      Np ( Nodo parent )        Piso i / 2


   Arbol heap

                        Padre
                        +----+
                        | pa |
                        +----+                    pa > hl
                         |  |
                +--------+  +--------+            pa > hr
                |                    |
              +----+              +----+          No importan los valores relativos de hl y hr
              | hl |              | hr |
              +----+              +----+
          Hijo Isquierdo       Hijo Derecho


Ejemplos

Ejemplo 1

En el ejemplo pueden observarse como evolucionan los árboles, para un archivo con 10 registros. En forma generica ( X1, X2, X3, ...., Xn-2, Xn-1, Xn ). En el ejemplo ( 26, 5, 77, 1, 61, 11, 59, 15, 48, 19 ).

                             *---*                                                     *---*                                                     *---*
                             |X 1|                                                     |2 6|                                                     |7 7|
                             *---*                                                     *---*                                                     *---*
                              | |                                                       | |                                                       | |
               +--------------+ +--------------+                         +--------------+ +--------------+                         +--------------+ +--------------+
               |                               |                         |                               |                         |                               |
             *---*                           *---*                     *---*                           *---*                     *---*                           *---*
             |X 2|                           |X 3|                     | 5 |                           |7 7|                     |6 1|                           |5 9|
             *---*                           *---*                     *---*                           *---*                     *---*                           *---*
              | |                             | |                       | |                             | |                       | |                             | |
       +------+ +------+               +------+ +------+         +------+ +------+               +------+ +------+         +------+ +------+               +------+ +------+
       |               |               |               |         |               |               |               |         |               |               |               |
     *---*           *---*           *---*           *---*     *---*           *---*           *---*           *---*     *---*           *---*           *---*           *---*
     |X 4|           |X 5|           |X 6|           |X 7|     | 1 |           |6 1|           |1 1|           |5 9|     |4 8|           |1 9|           |1 1|           |2 6|
     *---*           *---*           *---*           *---*     *---*           *---*           *---*           *---*     *---*           *---*           *---*           *---*
      . .             .                                         | |             |                                         | |             |
   .... ....       ....                                      +--+ +--+       +--+                                      +--+ +--+       +--+
   .       .       .                                         |       |       |                                         |       |       |
 *---*   *---*   *---*                                     *---*   *---*   *---*                                     *---*   *---*   *---*
 |   |   |   |   |   |                                     |1 5|   |4 8|   |1 9|                                     |1 5|   | 1 |   | 5 |
 *---*   *---*   *---*                                     *---*   *---*   *---*                                     *---*   *---*   *---*
 X n-2   X n-1    X n
                         Arbol Completo                                            Arbol Inicial                                Heap Inicial ( Heap n - 0 ) ( Heap 10 )


                             *---*                                                     *---*                                                 *---*
                             |6 1|                                                     |5 9|                                                 |4 8|
                             *---*                                                     *---*                                                 *---*
                              | |                                                       | |                                                   | |
               +--------------+ +--------------+                         +--------------+ +--------------+                     +--------------+ +--------------+
               |                               |                         |                               |                     |                               |
             *---*                           *---*                     *---*                           *---*                 *---*                           *---*
             |4 8|                           |5 9|                     |4 8|                           |2 6|                 |1 9|                           |2 6|
             *---*                           *---*                     *---*                           *---*                 *---*                           *---*
              | |                             | |                       | |                             | |                   | |                             | |
       +------+ +------+               +------+ +------+         +------+ +------+               +------+ +------+     +------+ +------+               +------+ +------+
       |               |               |               |         |               |               |               |     |               |               |               |
     *---*           *---*           *---*           *---*     *---*           *---*           *---*           *---* *---*           *---*           *---*           *---*
     |1 5|           |1 9|           |1 1|           |2 6|     |1 5|           |1 9|           |1 1|           | 1 | |1 5|           | 5 |           |1 1|           | 1 |
     *---*           *---*           *---*           *---*     *---*           *---*           *---*           *---* *---*           *---*           *---*           *---*
      | |                                                       |
   +--+ +--+                                                 +--+
   |       |                                                 |
 *---*   *---*                                             *---*
 | 5 |   | 1 |                                             | 5 |
 *---*   *---*                                             *---*

                     Heap n - 1 ( Heap 9 )                                      Heap n - 2 ( Heap 8 )                                 Heap n - 3 ( Heap 7 )

                      Clasificados = 77                                         Clasificados = 61,77                                Clasificados = 59, 61, 77


                             *---*                                                     *---*                                                 *---*
                             |2 6|                                                     |1 9|                                                 |1 5|
                             *---*                                                     *---*                                                 *---*
                              | |                                                       | |                                                   | |
               +--------------+ +--------------+                         +--------------+ +--------------+                     +--------------+ +--------------+
               |                               |                         |                               |                     |                               |
             *---*                           *---*                     *---*                           *---*                 *---*                           *---*
             |1 9|                           |1 1|                     |1 5|                           |1 1|                 | 5 |                           |1 1|
             *---*                           *---*                     *---*                           *---*                 *---*                           *---*
              | |                             |                         | |                                                   |
       +------+ +------+               +------+                  +------+ +------+                                     +------+
       |               |               |                         |               |                                     |
     *---*           *---*           *---*                     *---*           *---*                                 *---*
     |1 5|           | 5 |           | 1 |                     | 1 |           | 5 |                                 | 1 |
     *---*           *---*           *---*                     *---*           *---*                                 *---*

                     Heap n - 4 ( Heap 6 )                                      Heap n - 5 ( Heap 5 )                                Heap n - 6 ( Heap 4 )

                 Clasificados = 48, 59, 61, 77                            Clasificados = 26, 48, 59, 61, 77                  Clasificados = 19, 26, 48, 59, 61, 77


                             *---*                                                    *---*                                                  *---*
                             |1 1|                                                    | 5 |                                                  | 1 |
                             *---*                                                    *---*                                                  *---*
                              | |                                                      |
               +--------------+ +--------------+                        +--------------+
               |                               |                        |
             *---*                           *---*                    *---*
             | 5 |                           | 1 |                    | 1 |
             *---*                           *---*                    *---*

                     Heap n - 7 ( Heap 3 )                                      Heap n - 8 ( Heap 2 )                                Heap n - 9 ( Heap 1 )

           Clasificados = 15, 19, 26, 48, 59, 61, 77               Clasificados = 11, 15, 19, 26, 48, 59, 61, 77        Clasificados = 5, 11, 15, 19, 26, 48, 59, 61, 77












                    Heap n - 10 ( Heap 0 )

       Clasificados = 1, 5, 11, 15, 19, 26, 48, 59, 61, 77


Funciones

ADJUST

El parámetro i es la posición del primer nodo del árbol.
El parámetro n es la posición del último nodo del árbol.

HSORT

El parámetro R es un archivo con registros R1, R2, ..., Rn.
El parámetro n es la cnatidad de registro del archivo R.

                                                       piso de n/2
                                             +----------------------------+
                                             |                            |
                                             V                            |
              R1   R2   R3            Ri-1  Ri  Ri+1           Rn-2 Rn-1  Rn
   ........------------------.......------------------.......------------------.......
            |    |    |    |         |    |    |    |         |    |    |    |              n slots       Input File
   ........------------------.......------------------.......------------------.......

                                      Ajusto ............u................>
                                 Ajusto ..................................>



                  Ajusto .................................................>
             Ajusto ......................................................>
        Ajusto ...........................................................>



                                                                       n-1
                                                                      +---+
                                                                      |   |
                                                                      V   |
              R1   R2   R3            Ri-1  Ri  Ri+1           Rn-2 Rn-1  Rn
   ........------------------.......------------------.......------------------.......
            |    |    |    |         |    |    |    |         |    |    |    |              n slots       Input File
   ........------------------.......------------------.......------------------.......

        Ajusto ...........................................................>
        Ajusto ......................................................>
        Ajusto .................................................>



        Ajusto .........>
        Ajusto ....>