【TUM-EI-Programmieren】403 d) - Sortieren mit dem Quicksort-Algorithmus 使用快速排序算法排序

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值