python實現快速排序

2022-07-25 20:03:10 字數 764 閱讀 9144

思路:

例如有列表如下 li = [5,7,4,6,3,1,2,9,8]

1、取乙個元素p(一般取第乙個元素),使元素p歸位

2、列表被p分成兩部分,左邊都比p小,左邊都比p大

3、遞迴完成排序

所以快速排序關鍵在於怎麼讓元素p歸位?

歸位思路:

1、先把5取出賦值賦值給tmp(可把原來5的位置看作乙個空位),列表最右邊定位right,最左邊定位left。

2、先從列表最左邊開始,若大於或者等於5,就把right向前移一位,即right - 1;若right小於5,則把right的值賦給當前列表的空位。(只有當賦值後才可執行下一步)

3、再把left的值與p相比,若小於或等於,就把left向後移一位,即left + 1;若left大於5,則把left的值賦給當前列表的空位。(只有當賦值後才可執行下一步)

4、重複2,3步。直到left不在小於right

實現**:

整體快速排序

實現p歸位

到此快速排序完畢

python實現快速排序

快速排序的思想是任意選取要排序的list中的乙個數pivot,每次遞迴時將list按照 小於pivot的,pivot,大於pivot的 排序,再對小於和大於pivot部分分別快速排序。function quicksort list select a pivot foreach x in list i...

Python實現快速排序

快速排序的思路 numlist 6,8,1,4,3,9,5,4,11,2,2,15,6 1 設 keys 又稱為監視哨 等於 numlist 0 i等於0 j等於len numlist 1,即如下 numlist 6,8,1,4,3,9,5,4,11,2,2,15,6 keys 6 i 0 j2 1...

python實現快速排序

coding utf 8 實現對列表中的數進行快速排序 importrandom 隨機生成乙個有1000整數的列表 number random.randint 1 1000 foriinrange 1000 列印原始列表 printnumber 單個列表快速排序函式 返回一次排序後的列表和所選取基數...