快速排序python遞迴實現

2021-09-12 13:04:14 字數 906 閱讀 1551

# 快速排序python

def swap(list,i,j):

"""位置互換"""

list[i], list[j] = list[j], list[i]

return list

def quicksort(list, start, end):

if start < end:

i,j = start,end

base = list[i] # 設定基數

while i < j:

while i < j and list[j] >= base: # 從後往前找

j -= 1

swap(list,i,j) # 當找到比基數小的數與其互換位置

while i < j and list[i] <= base: # 從前往後找

i += 1

swap(list, i, j) # 當找到比基數大的數與其互換位置

# 遞迴

quicksort(list,start,i-1)

quicksort(list,j+1,end)

return list

list = [56,34,78,56,98,86,45,56,32,89,99,46,33,87,56]

res = quicksort(list,0,len(list)-1)

print(res)

輸出結果

/usr/bin/python3.5 /home/python/desktop/test/快速排序.py

[32, 33, 34, 45, 46, 56, 56, 56, 56, 78, 86, 87, 89, 98, 99]

process finished with exit code 0

遞迴和非遞迴快速排序 Python實現

快速排序的原理是基於分治策略,設定乙個基準線 pivot 將資料分為兩部分,不斷分治實現資料的排序 由實現原理容易得到遞迴 如下 def qsort arr ifnot len arr return else 在這裡以第乙個元素為基準線 pivot arr 0 left qsort x for x ...

快速排序 遞迴實現

快速排序演算法 用到了 分治法 遞迴演算法 package com.xiahui public class quicksort quicksort quicksort new quicksort quicksort.quicksort a,0,6 for int i 0 i a.length i p...

快速排序 遞迴實現

快速排序演算法 用到了 分治法 遞迴演算法 package com.xiahui public class quicksort quicksort quicksort new quicksort quicksort.quicksort a,0,6 for int i 0 i a.length i p...