Zerstoerer
Lieutenant
- Registriert
- Okt. 2010
- Beiträge
- 685
Guten Abend zusammen,
meine Frage ist heute, wie ich den Quicksort Algorithmus nicht rekursiv darstelle, sondern mithilfe eines Stacks oder Queue. Mein normaler Quicksort Algorithmus sieht derzeit noch so aus:
Mir wurde gesagt, wenn man den rekursiven Algorithmus schon hat, könnte man wohl alles so lassen, man müsse nur die Parameter übernehmen und statt dem 2x quicksort(feld,xxxx,x) nur den stack einfügen.
Doch stimmt das? Muss ich nur dort etwas ändern? Müsste ich dann nur statt dem rekursiven Aufruf nur s.push(quicksort(feld,xxxxx,x)) einfügen?
Wäre dankbar für ein paar Ratschläge.
meine Frage ist heute, wie ich den Quicksort Algorithmus nicht rekursiv darstelle, sondern mithilfe eines Stacks oder Queue. Mein normaler Quicksort Algorithmus sieht derzeit noch so aus:
Code:
public class Quicksort
{
public int[] zeichen = new int[100];
public void quicksort(int[] feld, int rechts, int links) {
if(rechts>links) {
int l = links;
int r=rechts;
int vergleich = feld[rechts];
while(l<=r){
while(feld[l]<vergleich){
l++;
}
while(feld[r]>vergleich) {
r--;
}
if(r>=l){
int hilf = feld[r];
feld[r]=feld[l];
feld[l] = hilf;
l++;
r--;
}
}
quicksort(feld,links,r);
quicksort(feld,l,rechts);
}
zeichen = feld;
}
Mir wurde gesagt, wenn man den rekursiven Algorithmus schon hat, könnte man wohl alles so lassen, man müsse nur die Parameter übernehmen und statt dem 2x quicksort(feld,xxxx,x) nur den stack einfügen.
Doch stimmt das? Muss ich nur dort etwas ändern? Müsste ich dann nur statt dem rekursiven Aufruf nur s.push(quicksort(feld,xxxxx,x)) einfügen?
Wäre dankbar für ein paar Ratschläge.