- 最常用的排序------快速排序
- 三种排序方式比较:
- (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]);//输出结果
}
}