快速排序演算法實現

2021-08-22 06:01:29 字數 1210 閱讀 8663

排序在各種場合經常被用到。

快速排序是十分常用的高效率的演算法。

其思想是:先選乙個「標尺」,

用它把整個佇列過一遍篩子,

以保證:其左邊的元素都不大於它,其右邊的元素都不小於它。

這樣,排序問題就被分割為兩個子區間。

再分別對子區間排序就可以了。

快速排序是找出乙個元素(理論上可以隨便找乙個)作為基準(pivot),然後對陣列進行分割槽操作,使基準左邊元素的值都不大於基準值,基準右邊的元素值 都不小於基準值,如此作為基準的元素調整到排序後的正確位置。遞迴快速排序,將其他n-1個元素也調整到排序後的正確位置。最後每個元素都是在排序後的正 確位置,排序完成。所以快速排序演算法的核心演算法是分割槽操作,即如何調整基準的位置以及調整返回基準的最終位置以便分治遞迴。

下面附上**:

#include 

void qs(int

*a,int left,int right)//迴圈結束時 low與high相等;

a[low]=key;//將key放在合適的位置,此時,key左邊的值都不大於它,右邊的值都不小於它;

qs(a,left,low-1);

qs(a,low+1,right);

//對該函式進行遞迴呼叫,完成對key左邊序列和右邊序列的排序;

}}int main();

qs(a,0,9);

for(int i=0;i<10;i++) printf("%d ",a[i]);

return0;}

再附上指標版本的**:

#include

void quicksort(int

*left,int

*right)

else

break;

while(low*low

<=key) low++;

if(low*high=*low;

high--;

}else

break;

}*low=key;

quicksort(left,low-1);

quicksort(low+1,right);

}} int main();

quicksort(a,a+7);

for(int i=0;i<8;i++) printf("%d ",a[i]);

return

0;

}

快速排序演算法實現

快速排序演算法的原理 將數列中任取乙個數,將其左部放置比其小的數,其右部放置比其大的數。然後,對其左,右部遞迴執行這種分割過程。原始碼如下 int32 sorteddata int32 quicksort int32 sortdata,dword sortdatalen assert sortdat...

快速排序演算法實現

學完了快速排序演算法,感覺挺容易的,所以趁著有點時間就寫了個實現程式。採用了介面和實現分離的原則 qsort.h inte ce of the quick sort define num 2000 設定最多個數為1999個 class qsort qsort.cpp include qsort.h ...

快速排序演算法實現

本程式是對快速排序演算法的實現,一次while 1 都將要比較的元素存入flag中,依次將比flag小的元素放在左邊,比flag大的元素放在右邊,然後用遞迴的方法,將flag左右兩邊的元素分別快速排序操作。本程式為了方便測試,所以使用者只要輸入元素個數,程式就會隨機生成相應元素個數的陣列,並自動對其...