#include <stdio.h>
int Feld[100];
void Quicksort(int links, int rechts) //UNTERPROGRAMM Quicksort(links, rechts);
{
int i,j,x; // VARIABLE i, j, x;
int T;
//BEGINNE
i = links; j = rechts; // i = links; j = rechts;
x = Feld[(links+rechts) / 2]; // x = Feld[(links+rechts) / 2];
//
do // WIEDERHOLE
{ while(Feld[i]<x) // SOLANGE Feld[i] < x:
i=i+1; // i = i + 1;
// ENDE SOLANGE
//
while(x<Feld[j]) // SOLANGE x < Feld[j]:
j=j-1; // j = j - 1;
// ENDE SOLANGE
//
if(i<=j) // WENN i <= j,
{ // DANN
T=Feld[i]; // Tausche Feld[i] Mit Feld[j];
Feld[i]=Feld[j];
Feld[j]=T;
i=i+1; // i=i+1; j=j-1;
j=j-1; // ENDE DANN
} // BIS i >= j
}while(i<j); //
if(links < j){ // WENN links < j,
// DANN
Quicksort(links, j); // Quicksort(links, j);
} // ENDE WENN
//
if(i < rechts){ // WENN i < rechts,
// DANN
Quicksort(i, rechts); // Quicksort(i, rechts);
} // ENDE WENN
//ENDE UNTERPROGRAMM
}
int main()
{
int i=0, j=0;
/* Einlesen der Liste */
do
{
printf("Bitte geben Sie eine Zahl ein oder Null zum Abbruch: ");
scanf("%i", &Feld[i]);
if(Feld[i] == 0) break;
i++;
} while (i < 100);
/* Sortieren der Liste */
Quicksort(0, i-1);
/* Ausgeben der sortierten Liste */
for(j = 0; j < i-1; ++j)
{
printf("%i ", Feld[j]);
}
printf("%i\n", Feld[i-1]);
return 0;
}
【TUM-EI-Programmieren】403 d) - Sortieren mit dem Quicksort-Algorithmus 使用快速排序算法排序
最新推荐文章于 2024-10-13 00:00:12 发布