-
vanilla.coffee
#1
Beitrag
von vanilla.coffee » 08. Jun 2007 17:10
hi,
wie bekomme ich es hin, dass die Funktion double-Werte sortiert und nicht nur int-Werte?
int zu double machen funktioniert nicht.
danke im Voraus.
Code: Alles auswählen
void quicksort(int feld[MAX], int left, int right) {
int rightpos = feld[right];
int l = left;
int r = right;
if(left < right) {
do {
while(feld[l] < rightpos) l++;
while(feld[r] > rightpos) r--;
if (l <= r) {
int swap = feld[l];
feld[l] = feld[r];
feld[r] = swap;
l++;
r--;
}
}
while(l <= r);
quicksort(feld, left, r);
quicksort(feld, l, right);
}
}
-
Lateralus
- prolinux-forum-admin
- Beiträge: 1238
- Registriert: 05. Mai 2004 7:35
#2
Beitrag
von Lateralus » 09. Jun 2007 10:20
Du musst einfach alle int durch double ersetzen (außer die, die zur Indizierung des Arrays fungieren). Übrigens solltest du das "double swap" nicht in der while-Schleife deklarieren - dann wird sie immer wieder neu deklariert.
Code: Alles auswählen
void quicksort(double feld[MAX], int left, int right) {
double rightpos = feld[right];
int l = left;
int r = right;
if(left < right) {
do {
while(feld[l] < rightpos) l++;
while(feld[r] > rightpos) r--;
if (l <= r) {
double swap = feld[l];
feld[l] = feld[r];
feld[r] = swap;
l++;
r--;
}
}
while(l <= r);
quicksort(feld, left, r);
quicksort(feld, l, right);
}
}
-
Quietscheentchen
#3
Beitrag
von Quietscheentchen » 09. Jun 2007 10:22
Außerdem musst du alles als "char" deklarieren und eine Funktion "string zufallszahl" implementieren.
Gruß,
das Quietscheentchen
-
vanilla.coffee
#4
Beitrag
von vanilla.coffee » 09. Jun 2007 12:26
Danke für den Tipp.
Das Programm bricht aber immer noch mit "Speicherzugriffsfehler" ab.
Habe keine Ahnung warum.