//实现快速排序算法
#include<iostream>
using namespace std;
void quicksort(int *a,int left,int right)
{
int f,t;
int ltemp,rtemp;
ltemp=left;
rtemp=right;//左右指针开始分别在左右两端
f=a[(left+right)/2];//取中间元素为分界值
while(ltemp<rtemp)
{
while(a[ltemp]<f)
{
++ltemp;
}//如果左侧元素比分界值小就不改变位置
while(a[rtemp]>f)
{
--rtemp;
}//如果右侧元素比分界值大就不改变位置
if(ltemp<=rtemp)//此时已经找到左边比分界值大的和右边比分界值小的值,把它们交换
{
t=a[ltemp];
a[ltemp]=a[rtemp];
a[rtemp]=t;
++ltemp;
--rtemp;
}
}//该循环结束时已经将排序的数据分成两部分
if(ltemp==rtemp)
{
++ltemp;
}
//对接下来的两部分分别进行相同的排序(递归调用)
if(left<rtemp)
{
quicksort(a,left,ltemp-1);
}
if(right>ltemp)
{
quicksort(a,rtemp+1,right);
}
}
int main()
{
int a[10];
cout<<"请输入十个整数:";
for(int i=0;i<10;i++)
{
cin>>a[i];
}
cout<<"排序后为:"<<endl;
quicksort(a,0,9);
for(int i=0;i<10;i++)
{
if(i!=9)
{
cout<<a[i]<<" ";
}
else
{
cout<<a[i];
}
}
return 0;
}
06-13