Quicksort fügt vor das sortierte 0 hinzu
-
Hy,
ich habe folgendes Problem. Und zwar habe ich Quicksort geschrieben und das mit dem Sortieren klappt auch ganz gut, allerdings wird bei der Ausgabe der sortierten Liste eine 0 vor die Liste gefügt, dafür "verschwindet" die letzte Zahl der sortierten Liste. Wie kann ich das abstellen und dass alle Zahlen angezeigt werden?
Wäre über Hilfe sehr dankbar!!!
Thx im Voraus
Hier der Quelltext:
#include <stdio.h> #include <string.h> void quicksort(int* array, int begin, int end) { int q; if(begin<end) { q = partition(array, begin, end); quicksort(array, begin, q); quicksort(array, q+1, end); } } int partition(int* array, int begin, int end) { int x = array[begin]; /*Pivot*/ int i=begin-1; int j=end+1; int tmp; while(1) { while(array[++i]<x && i<=end); while(array[--j]>x && j>=0); if(i>=j) break; if(array[i]>array[j]) { tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } return j; } int main(void) { int values[10] = { 17 , 3 , 0 , 6 , 1 , 7 , 4 , 44 , 9, 13 }; int i; for(i=0; i<10; i=i+1) { printf("%2d ", values[i]); } printf("\nBitte zum Sortieren eine beliebige Taste drücken "); if(getchar()) { quicksort(values, 0, 10); printf("\n"); for(i=0; i<10; i=i+1) { printf("%2d ", values[i]); } } return 0; }
-
mir wird doch bitte einer helfen können oder?
-
ruf mal quicksort mit (0, 9) auf ...
Außerdem hast du noch einen Fehler im Algorithmus.
Du vergleichst nur auf kleiner und größer, aber nicht auf Gleichheit.Teste mal deine Liste mit doppelten Einträgen...
-
hallo bodensee14 man sieht sich am montag beim studium :P, schreib mich einfach an
-
ja ok, und wer bist du???
-
wo habe ich einen fehler im algorithmus?!?!?