# 快速排序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...