**如下:
#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 ...