Hallo,
ich habe folgendes Problem: ein zweidimensionales array enthält in der ersten Spalte (zahl[x][0]) die Zehnerpotenz einer zweistelligen Zahl und die zweite (zahl[x][1]) die Einerpotenz der zahl.
Jetzt soll diese Zahl mit quicksort sortiert werden (also zuerst nach den Zehnerpotenzen und dann nach den Einern.
Folgender Algorithmus tuts nicht, allerdings weiß ich nicht wieso
Kann mir jemand helfen?
ich habe folgendes Problem: ein zweidimensionales array enthält in der ersten Spalte (zahl[x][0]) die Zehnerpotenz einer zweistelligen Zahl und die zweite (zahl[x][1]) die Einerpotenz der zahl.
Jetzt soll diese Zahl mit quicksort sortiert werden (also zuerst nach den Zehnerpotenzen und dann nach den Einern.
Folgender Algorithmus tuts nicht, allerdings weiß ich nicht wieso
Kann mir jemand helfen?
Code:
void quicksort (int [][] zahl, int left, int right) {
int i, j, k, speicher;
i = left;
j = right;
k = zahl[(right + left) / 2][0]; //pivot: mittleres Elt. der 10er Potenzen
while (i <= j){
while (zahl[i][0] < k) i++;
while (zahl[j][0] > k) j--;
if (i<=j){
if(zahl[i][0] == zahl[j][0]){
if (zahl[i][1] > zahl[j][1]){
#speicher = zahl[i][0]; zahl[i][0] = zahl[j][0]; zahl[j][0] = speicher;
speicher = zahl[i][1]; zahl[i][1] = zahl[j][1]; zahl[j][1] = speicher;
}
}
else{
speicher = zahl[i][0]; zahl[i][0] = zahl[j][0]; zahl[j][0] = speicher;
speicher = zahl[i][1]; zahl[i][1] = zahl[j][1]; zahl[j][1] = speicher;
}
i++; j--;
}
}
if (left<j) quicksort(zahl, left, j);
if (i<right) quicksort(zahl, i, right);
}