HeapSort Binario in Java

di il
2 risposte

HeapSort Binario in Java

La classe deve implementare l'interfaccia e SortingAlgorithm<E extends Comparable<E>> quindi: public class BinaryHeapSort<E extends Comparable<E>> implements SortingAlgorithm<E>

Qualcuno ha qualche codice?

2 Risposte

  • Re: HeapSort Binario in Java

    CarloMassone ha scritto:


    La classe deve implementare l'interfaccia e SortingAlgorithm<E extends Comparable<E>> quindi: public class BinaryHeapSort<E extends Comparable<E>> implements SortingAlgorithm<E>
    Inizia a precisare cosa prescrive l'interfaccia SortingAlgorithm in termini di metodi e relativo "comportamento" che ci si aspetta.
  • Re: HeapSort Binario in Java

    In questo caso fa creare un albero binario quasi completo e nella radice è sempre presente il massimo valore.
    L'albero è rappresentato da un array con indici 0..N-1 dove N è il numero di elementi. Padre(i)=trunc((i-1/2). FiglioSinistro(i)=2*i+1. FiglioDestro(i)=2*i+2. Foglie:dall’indicetrunc(N/2) all’indice N-1. Dev'esser fatta un operazione chiamata Heapify: fondamentale che permette di creare uno Heap a partire da una nuova radice e due Heap che rappresentano i due sottoalberi del nuovo Heap. Dato un indice i dell'array si assume che FiglioSinistro(i) e FIglioDestro(i) siano indici che nell'array sono radici di sottoalberi che rispettano la proprietà dell'heap.
    Una volta eseguita il nodo in posizione i è radice di uno heap corretto. La procedura ha complessità O(log2N) nel caso pessimo.

    Le altre operazioni sono:
    -Restituzione del massimo, complessità O(1);
    -Estrazione del massimo: complessità O(log2N), in quanto bisogna richiamare Heapify(0) dopo aver copiato in posizione 0 l'elemento in posizione N-1 e dopo aver eliminato quest'ultimo dall'array.

    Per inserire un nuovo elemento nello heap si posiziona il nuovo valore in fondo all'array (la foglia viene confrontata con il padre e scambiata con esso se maggiore). Il procedimento continua fino a quando non si trova che il padre corrente del nodo è maggiore di esso.
Devi accedere o registrarti per scrivere nel forum
2 risposte