//快速排序。
#include <iostream>
#include <stdio.h>
using namespace std;
int n,a[101];
void quicklysort(int left,int right)
{
int i,j,t,temp;
if(left>right) return; //递归结束条件。
temp=a[left]; //设立基准数。
j=right;
i=left;
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;
quicklysort(left,i-1);
quicklysort(i+1,right);
return;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
quicklysort(0,n-1);
for(int i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
快速排序
最新推荐文章于 2021-03-10 05:16:53 发布