快速排序的一種較簡單寫法

2021-09-13 15:23:31 字數 737 閱讀 6612

文中的快速排序實際上是快速找到首位元素的實際位置並放置,接著通過二分法,進行遞迴查詢放置,完成排序。

void quicksort(int *a,int low,int high)

{ int i=low, j=high;

if(i=temp&&i首先我們拿到一組資料a,找到a的最低位下標和最高位下標。接著使用哨兵a[i]和哨兵a[j]查詢首位元素a[low]的位置並替換。**如下:

int temp=a[low];

while(i=temp&&i查詢的核心在於比首元素大的會放在右側,而比首元素小的會放在左側。這個操作是怎麼完成的,我們首先通過這三行**完成比首元素大的會放在右側的操作:

while(a[j]>=temp&&i當a[j]>=temp(首位元素)並且i六行**迴圈往復,完成比首元素大的會放在右側,而比首元素小的會放在左側的操作。

上文中我們看到當i現在首元素找到自己的位置,並將陣列分為兩個區域,接下來就可以用遞迴來進行迴圈操作,找到每乙個元素的位置並放置。

quicksprt(a,low,i-1);

quicksort(a,i+1,high);

最後,關於為什麼要從右開始遍歷,這是由於a[low]值被變數temp儲存,右側第乙個a[j]比temp大的值會被直接賦給a[low],緊接著進行左側的遍歷,尋找到比temp大的值後賦給右側a[j]。如果先從左側遍歷,那麼最右側元素的值被a[low]覆蓋,程式出錯。

以上就是快速排序的一種較簡單寫法。

一種快速排序演算法

using system class program for int l 0 l src.length l src count temp l i 3 0xff temp l static void main string args watch.stop console.writeline quick...

比較簡單的一種快速排序方法

def quicksort head,tail head1 head tail1 tail tmp arr head 儲存臨時元素 如果頭指標小於尾指標一直迴圈,直到相等找到元素的正確索引跳出迴圈 while head tail 尾部資料大於臨時元素,尾指標前移 while arr tail tmp...

快速排序的一種實現

閒來沒事,寫了乙個程式玩玩,省的到時候會了shell,又不會c的程式設計了 手動痛哭 本著簡明的原則,選取的標準數是在陣列的 開頭 或者 結尾處 這裡需要注意,如果你選擇的基準數是在左側,那麼就需要從右側開始遍歷陣列 從右側選取的基準數也是同理。include include include usi...