hallo,
ich habe die aufgabe einen programm zu schreiben,derdie methoden heapify und heapsort auf ein array anwendet...
für heapify habe ich einen ansatz... doch leider erhalte ich eine warnung,aber keinen fehler.
heir ist der quellcode:
heapsort müsste mithilfe der heapifymethode eigentlich recht einfach sein zu implementieren
doch wie bekomme ich es hin, dass heapify nur noch vom index 0 bis arraylänge-2 läuft und beim nächten schleifendurchlauf von 0bis arraylänge-3?
würde mich sehr auf tipps und verbesserungen freuen
danke im voraus
mfg
etlearner
ich habe die aufgabe einen programm zu schreiben,derdie methoden heapify und heapsort auf ein array anwendet...
für heapify habe ich einen ansatz... doch leider erhalte ich eine warnung,aber keinen fehler.
heir ist der quellcode:
Java:
public class HeapSort < T extends Comparable> {
T[] knoten;
public HeapSort(T[] knoten){
this.knoten=knoten;
}
void swap(T a,T b){
T c=a;
a=b;
b=c;}
private static int getLeftChild( int i) {
return 2 * i + 1;
}
private static int getRightChild(int i) {
return 2 * i + 2;
}
public void heapify(){
for (int i= (knoten.length-1)/2; i>=0; i--){
heapify(i, knoten.length-1);
}
}
private void heapify(int i, int end){
int linkeskind=getLeftChild(i);
int rechteskind=getRightChild(i);
int biggest;
if(rechteskind>end && linkeskind >end){
if(knoten[i].compareTo(knoten[linkeskind])<0){
swap(knoten[i], knoten[linkeskind]);}}
else if(rechteskind<=end){
if(knoten[linkeskind].compareTo(knoten[rechteskind])>=0){
biggest=linkeskind; }
else{ biggest=rechteskind;}
if(knoten[i].compareTo(knoten[biggest])<0){
swap(knoten[biggest],knoten[i]);
}
heapify(biggest,end);
}
}
}
heapsort müsste mithilfe der heapifymethode eigentlich recht einfach sein zu implementieren
Java:
void heapsort(){
int sortierterbreich=0;
while(i<knoten.length){
knoten.heapify();
swap(knoten[0],knoten[knoten.length-1]);
i++;}
würde mich sehr auf tipps und verbesserungen freuen
danke im voraus
mfg
etlearner