- 最常用的排序------快速排序
- 三種排序方式比較:
- (1)桶排序:佔用空間大,但最快O(M+N)
- (2)冒泡排序:最慢O(N^2)
- (3)快速排序:比較優O(NlogN)
#include<stdio.h>
int a[101],n;//定義全局變量
void quicksort(int left,int right)
{
int i,j,t,temp;
if(left>right){
return;
}
temp=a[left];//temp存的是基準數
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[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;//基準數歸位
quicksort(left,i-1);//繼續處理左邊,遞歸
quicksort(i+1,right);//繼續處理右邊,遞歸
return;
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a[i]);//讀入數據
}
quicksort(1,n);
for(i=1;i<=n;i++){
printf("%d ", a[i]);//輸出結果
}
}