python 快速排序詳解

2022-07-02 23:27:11 字數 1092 閱讀 5609

快速排序 基本思想是:

1.先從數列中取出乙個數作為基準數。

2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。

3.再對左右區間重複第二步,直到各區間只有乙個數。

def quick_sort(li, start, end):

# 分治: 一分為二

# start=end ,證明要處理的資料只有乙個

# start>end ,證明右邊沒有資料

if start >= end:

return

# 定義兩個游標,分別指向0和末尾位置

left = start

right = end

# 把0位置的資料,認為是中間值

mid = li[left]

while left < right:

# 讓右邊游標往左移動,目的是找到小於mid的值,放到left游標位置

while left < right and li[right] >= mid:

right -= 1

li[left] = li[right]

# 讓左邊游標往右移動,目的是找到大於mid的值,放到right游標位置

while left < right and li[left] < mid:

left += 1

li[right] = li[left]

# while結束後,把mid放到中間位置,left=right

li[left] = mid

# 遞迴處理左邊的資料

quick_sort(li, start, left - 1)

# 遞迴處理右邊的資料

quick_sort(li, left + 1, end)

if __name__ == '__main__':

ls = [2, 3, 5, 1, 4, 6]

# l = 3 [2,1,5,6,5,4]

# [2, 1, 5, 6, 5, 4]

quick_sort(ls, 0, len(ls) - 1)

print(ls)

python的快速排序演算法詳解

def quick sort arr if len arr 2 當資料集長度為1時,結束遞迴 return arr mid arr len arr 2 基準數可以隨便選,我這裡就對2取整了 left,right 申明兩個列表用來儲存左右分區的數 arr.remove mid 將基準數從陣列中移除 f...

詳解python實現快速排序演算法

快速排序嚴重依賴分割槽,分割槽部分完成就代表排序成功了一半 1 詳細思路見 注釋部分 def quick sort l,low,high 分割槽的過程 low代表左指標,high代表右指標 1 low會逐個向右移動,遇到大於或等於基準元素時,停止 2 high會逐個向左移動,遇到小於或等於基準元素時...

快速排序詳解

快速排序也是基於交換的原理進行的,是對氣泡排序的一種改進。即它是通過不斷比較和移動交換來實現排序的,只不過它的實現,增大了記錄的比較和移動的距離,將關鍵字比較大的記錄從前面直接移動到後面,關鍵字較小的記錄從後面直接移動到前面,從而減小了總的比較次數和移動次數。快速排序是找出乙個元素 理論上可以隨便找...