viernes, 18 de septiembre de 2015

Implementación de un monticulo o heap en javascript.

El montículo es una estructura que siempre tiene como primer elemento el mayor, o el mínimo si es un montículo de mínimos, con un coste muy bajo. Para más información os animo a empezar por wikipedia.

Características de la implementación:
  1. Al construir el montón se debe pasar un boolean con valor true si se quiere que sea de máximos, sino será de mínimos.
  2. Los objetos se insertarán en el heap dentro de un envoltorio (collections.Heap.element) junto con una función que que acepte un parámetro y devuelva true si el objeto "envuelto" es menor que el parámetro.
  3. La estructura binaryHeap forma parte del módulo collections al que se irán añadiendo otras.
En este enlace se puede descargar un rar que contiene la implementación de la estructura y unos test con QUnit.

Lo siguiente es un ejemplo de su utilización:


    var q = new collections.Heap(true);

    function isSmallerFunction(other){
      return this.value < other.value;
    };
    q.insert(new q.element(5, isSmallerFunction));
    q.insert(new q.element(3, isSmallerFunction));
    q.insert(new q.element(7, isSmallerFunction));
    q.insert(new q.element(1, isSmallerFunction));
    q.insert(new q.element(8, isSmallerFunction));
    q.insert(new q.element(8, isSmallerFunction));
    q.insert(new q.element(9, isSmallerFunction));
    q.insert(new q.element(0, isSmallerFunction));

    console.log(q.toString());
    
    while(q.size > 0 ){
      var aux = q.pop();
      console.log(aux.value);
    }

No hay comentarios:

Publicar un comentario