快速排序是分而治之法的一种排序方法,快速排序将n个元素分为三段。left段,right段和middle段,中间仅有一个元素。我叫做关键值。左边的元素都不大于中间段,右边的元素都不小于中间段。因此可以对left与right段进行单独的排序。
完整代码实现如下:
#include<iostream>
using namespace std;
void quickSort(int array[],int X,int Y) //X,Y分别是数组的起始下标
{
int z,y,i,k;
if(X<Y)
{
z=X;
y=Y;
k=array[z]; //关键值
do{
while((z<y)&&(array[y]>=k))
y--;
if(z<y) //右边的元素小于k,移到k的左边。
{
array[z]=array[y];
z++;
}
while((z<y)&&array[z]<=k)
z++;
if(z<y) //左边的值小于k,移到看k的右边
{
array[y]=array[z];
}
}while(z!=y);
array[z]=k;//复制key值到array[z]
quickSort(array,X,z-1);//对z的左侧进行排序
quickSort(array,z+1,Y);//对z的右侧进行排序
}
}
int main()
{
int a[11], i;
// char tmp[20];
for (i = 0; i<11; i++)
cin>>a[i];
quickSort(a, 0, 10);
for (i = 0; i<11; i++)
cout<<"输出数组元素"<<a[i]<<endl;
system("pause");
return 0;
}