Ich hänge gerade am allseits gehassten Heapsort.
Ich kriege ihn einfach nicht gebacken, weiß auch nicht, wo mein Fehler im Algorithmus liegt.
Zur Erklärung des Codes:
this.list ist ein string-array
this.Switch ist die Methode, die den Dreiecks-Tausch durchführt.
public void Sort() { for (int i = (this.list.Length / 2) - 1; i >= 0; i--) { this.DownHeap(i); } for (int i = this.list.Length - 1; i > 1; i--) { this.Switch(0, i); this.DownHeap(0); } } private void DownHeap(int i) { int w = 2 * i + 1; while (w < this.list.Length) { if (w + 1 < this.list.Length) { if (this.list[w + 1].CompareTo(this.list[w]) > 0) w++; } if (this.list[i].CompareTo(this.list[w]) >= 0) return; this.Switch(i, w); i = w; w = 2 * i + 1; } }
Schonmal, vielen Dank im voraus!
Dieser Beitrag wurde von Witi bearbeitet: 12. Februar 2006 - 22:01