快排就是給你一堆數,定義一個基準數,大於基準數的放右邊,小於的放左邊。
比如說: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;
}