用陣列實現快速排序(C++)
阿新 • • 發佈:2019-02-04
快速排序是分而治之法的一種排序方法,快速排序將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;
}