#include<stdio.h>
int a[100005];
void quicksort(int a[],int left,int right)
{
int i,j,t,temp;
if(left>right) return ;//递归跳出条件
temp=a[(left+right)/2];//采用中间位置的数作为支点
i=left; j=right;//两边边界
while(i<=j)
{
while(a[j]>temp) j--;//从右往左找小于支点数
while(a[i]<temp) i++;//从左往右找大于支点数
if(i<=j) //交换
{
t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
}
}
quicksort(a,left,j); //递归处理左边的数
quicksort(a,i,right); //递归处理右边的数
return;
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
quicksort(a,0,n);
for(i=1;i<n+1;i++) printf("%d ",a[i]);
return 0;
}
洛谷P1177 排序 C语言
于 2023-11-21 16:59:08 首次发布