1. 程式人生 > >用陣列實現快速排序(C++)

用陣列實現快速排序(C++)

快速排序是分而治之法的一種排序方法,快速排序將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; }