#include <stdio.h>
int a[101],n;
void quicksort(int left,int right);
int main ()
{
int i,j,t;
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]);
}
printf("\n");
return 0;
}
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){ //当哨兵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);//继续处理右边的,这里一个递归的过程
}
C语言-快速排序
最新推荐文章于 2023-01-03 17:33:03 发布