快速排序 一次遍歷partition的實現

2021-07-22 15:16:00 字數 487 閱讀 3269

一種partition的實現如下:

1

private

int partition(int array, int left, int

right) 14}

1516

int tem = array[i + 1];

17 array[i + 1] =array[right];

18 array[right] =tem;

1920

return i + 1;

21 }

這是《演算法導論》正文的做法,特點是**清晰明了。思路是從前往後遍歷,沒遍歷到乙個新元素,先進行甄別,屬於小於樞紐元的話,把他交給陣列的left部分,否則right部分。具體如何交給left呢?那就是先讓left增加,這個時候left部分會持有乙個不屬於它的元素(大於等於pivot),這時候把這個元素和才遍歷到的元素交換就行了,而如果這個元素本來就屬於right部分,則不用做任何處理。

快速排序一次排序的應用

1.將陣列中的大寫字母與小寫字母分開 例子 乙個陣列中儲存有且僅有大寫和小寫字母,編寫乙個函式對陣列內的字母重新排列,讓小寫字母在大寫字母之前 include includeusing namespace std 判斷是否為大寫字母 bool isupper char a 判斷是否為小寫字母 boo...

記一次快速排序演算法的除錯

同學用c 編寫了乙個快速排序的程式,實現如下功能 1,用乙個陣列包含原始資料 2,用乙個陣列包含每個原始資料的位址 3,利用快速排序演算法,對第二個陣列進行排序。很顯然,排序的交換操作與原始資料的儲存分開進行,是為了節省時間。演算法寫出來了,程式編譯執行了,但是 排序前和排序後,輸出的結果居然是一樣...

zip物件只可以遍歷一次

處理資料的時候得到乙個zip物件result word,使用時 df video pd.series k 0 for k in result word name video df word pd.series v 1 for v in result word name word list df pd...