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

Hilfe
Neues Thema
Antworten


Nach oben


