000
25.11.2003, 20:36 Uhr
~Progi
Gast
|
Ich habe hier Quicksort und Bubblesort in einem Quellcode. Warum funktioniert Quicksort nicht. Was habe ich falsch gemacht?
C++: |
#include <stdio.h> #include <stdlib.h> #define MAX 50 int a[MAX]; int rand_seed=10;
/* gibt Zufallszahlen zwischen 0 und 32767 zurück*/ int rand() { rand_seed = rand_seed * 1103515245 +12345; return (unsigned int)(rand_seed / 65536) % 32768; } main() { int i,t,x,y,wahl; char weiter[5]; do { system("cls"); printf("\n\t\t Sortierverfahren"); printf("\n\t\t~~~~~~~~~~~~~~~~~~"); printf("\n\nWelches Sortierverfahren moechten Sie waehlen? "); printf("\n\nMoechten Sie Bubble-Sort verwenden, druecken Sie die 1!"); printf("\nMoechten Sie Quick-Sort verwenden, druecken Sie die 2!"); printf("\n\nBitte waehlen!"); printf("\n\n"); scanf("%i",&wahl); /* füllt das Feld. Am Anfang ist i=0, danach wird getestet, ob i kleiner als die maximale Zahl die ausgegeben werden soll, ist. Ist dies der Fall, so wird i um eins höher gezählt.*/ for (i=0; i < MAX; i=i+1) { a[i]=rand(); printf("%d\n",a[i]); } if(wahl==1) { /* sortieren der Felder. Ist x kleiner als die maximale Zahl-1, so wird x um eins erhöht.*/ for (x=0; x < MAX-1; x=x+1) for (y=0; y < MAX-x-1; y=y+1) if (a[y] > a[y+1]) { t=a[y]; a[y]=a[y+1]; a[y+1]=t; } /* gibt sortierte Felder solange aus, bis der Maximalwert, der ausgegeben werden sollte, erreicht ist.*/ printf("\n\nHier sind die Zahlen in sortierter Reihenfolge!\n"); printf("\n\n"); for (i=0; i < MAX; i=i+1) printf("%d\n",a[i]); }
if(wahl==2) { int feld[10]; int n;
int quicksort(int low, int high) { int h; int i=low; int j=high; int x=feld[(low+high)/2];
do { while(feld[i]<x)i=i+1; while(feld[j]>x)j=j-1; if(i<=j) { h=feld[i]; feld[i]=feld[j]; feld[j]=h; i=i+1;j=j-1; } }while(i<=j);
if(low<j) quicksort(low,j); if(i<high)quicksort(i,high);
}
int main(int argc,char *argv[]) { // Zufallsgenerator initialisieren srand((unsigned) time(NULL));
// Felder mit Zufallszahlen belegen for(n=0;n<=100;n++) feld[n]=1+rand()%100;
printf("\nHier stehen die unsortierten Zahlen!"); printf("\n\n");
// Ausgabe der unsortierten Zahlen for(n=0;n<=100;n++) printf("%d ",feld[n]);
// Sortieren quicksort(0,100); printf("\n"); printf("\nHier stehen die sortierten Zahlen!"); printf("\n\n"); // Ausgabe der sortierten Zahlen for(n=0;n<=100;n++) printf("%d ",feld[n]); scanf("%i",&n); } } printf("\n\n\nMoechten Sie fortfahren? ja/nein "); scanf("%s",weiter); } while (weiter[0]=='j' || weiter[0]=='J');
}
|
Bearbeitung von Pablo: |
[ cpp ] tags gesetzt. Bitte nächstes Mal dran denken
|
Dieser Post wurde am 25.11.2003 um 21:41 Uhr von Pablo Yanez Trujillo editiert. |