Python八大排序(五) 快速排序

2021-09-26 16:26:15 字數 621 閱讀 3476

**如下:

#5.快速排序(交換排序)

#思想:先找乙個虛擬的中間值,按此中間值將所有資料分為兩部分,小於中間值的資料放在左邊大於中間值的放在右邊,在以同樣的方式處理

#左右兩邊的資料直到排完序為止。

def quick_sort(num_list):

if len(num_list) < 2:

return num_list

left_list = #存放小於基準數的數

right_list = #大於

base_node = num_list.pop(0) #取列表第乙個數為基準數,將剩餘元素依次與第乙個數比較。在這裡採用pop()方法的原因就是需要移除這個基準結點,並且賦值給base_node這個變數

for one_num in num_list:

if one_num < base_node:

else:

return quick_sort(left_list) + [base_node] + quick_sort(right_list)

print(quick_sort(num_list=[22,5,12,44,2,13,21,77]))

八大排序(五)快速排序

快速排序使用了分治策略。一 選定乙個基準數 一般選取第乙個數 然後把大於它的數都放在它右邊,把小於它的數放左邊。二 這樣就把陣列分成左右兩部分。再將左右兩部分分別遞迴執行第一步,最終當執行第一步的部分大小為一時,遞迴完成,原陣列排序完成。public class quicksort 將剛剛找到的數插...

八大排序(三) 快速排序

快速排序的基本思想如下 設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序是一種不穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算...

八大排序之快速排序

快速排序 public class quicksort int arr 測試時間複雜度 o n 2 int arr new int 80000 for int i 0 i arr.length i long start time system.currenttimemillis quicksort ...