#include<iostream>
#define LEN 10
using namespace std;
int Partition(int a[],int h,int t) //找到a[h]在数组a[h,t]中的位置
{
int i=h,j=t+1;
int x=a[h];
while(1){
//将小于x的数交换到左边区域
//将大于x的数交换到右边区域
while(a[++i]<x&&i<j);
while(a[--j]>x);
if(i>=j) break;
swap(a[i],a[j]);
}
a[h]=a[j];
a[j]=x;
return j;
}
void qsort(int a[],int h,int t)
{
if(h<t){
int q=Partition(a,h,t); //找到a[h]在数组中的下标
qsort(a,h,q-1); //对左半部分排序
qsort(a,q+1,t); //对右半部分排序
}
}
int main()
{
int a[LEN];
int i;
for(i=0;i<10;i++)
cin>>a[i];
qsort(a,0,LEN-1);
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布