這次是快排————也是蠻簡單的

快排就是給你一堆數,定義一個基準數,大於基準數的放右邊,小於的放左邊。

比如說:6 1 2 7 9 3 4 5 10 8

以6爲基準數,大於6的放右邊 小於6的放左邊》》》:3 1 2 5 4 6 9 7 10 8

ps:詳細可以看大佬的啊哈;

下面放代碼:

#include<stdio.h>
int a[111],n;
void quicksort(int left,int right)
{
    int i,j,t,temp;
    if(left>right)
        return;//結束的條件。


    temp=a[left];
    i=left;
    j=right;
    while(i!=j)
    {
        while(a[j]>=temp&&i<j)
            j--;
        while(a[i]<=temp&&i<j)
            i++;
        if(i<j)
        {
            t=a[j];
            a[j]=a[i];
            a[i]=t;
        }
    }
    //i=j時 進行交換
    a[left]=a[i];
    a[i]=temp;
    //現在這裏的i和j相等 第一次到這裏的時候都是6
    quicksort(left,i-1);//左邊在進行處理
    quicksort(i+1,right);//右邊再處理
}
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
    }
    quicksort(1,n);
    for(int i=1; i<=n; i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}


發佈了33 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章