python实现快排算法_Python实现快速排序算法
Python實現快速排序算法
快速排序算法是一種基于交換的高效的排序算法,由C.R.A.Hoare于1962年提出,是一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide and conquer algorithm)。
分治法的基本思想
將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞歸地解這些子問題,然后將這些子問題的解組合為原問題的解。
快速排序的基本思想
先找到一個基準點(一般指數組的中部),然后數組被該基準點分為兩部分,依次與該基準點數據比較,如果比它小,放左邊;反之,放右邊。
左右分別用一個空數組去存儲比較后的數據。
最后遞歸執行上述操作,直到數組長度 <= 1;
動畫圖
代碼實現
def?quick_sort(lists,?left,?right):
'''快速排序'''
#?跳出遞歸判斷
if?left?>=?right:
return?lists
#?選擇參考點,該調整范圍的第1個值
key?=?lists[left]
low?=?left
high?=?right
#?循環判斷直到遍歷全部
while?left?
#?從右邊開始查找大于參考點的值
while?left?=?key:
right?-=?1
lists[left]?=?lists[right]?#?這個位置的值先挪到左邊
#?從左邊開始查找小于參考點的值
while?left?
left?+=?1
lists[right]?=?lists[left]?#?這個位置的值挪到右邊
#?寫回改成的值
lists[left]?=?key
#?遞歸,并返回結果
quick_sort(lists,?low,?left?-?1)?#?遞歸左邊部分
quick_sort(lists,?left?+?1,?high)?#?遞歸右邊部分
return?lists
numbers?=?[4,?0,?7,?9,?2,?8,?1,?3,?6,?5]
quick_sort(numbers,0,len(numbers)-1)
assert?numbers?==?[0,?1,?2,?3,?4,?5,?6,?7,?8,?9]
總結
以上是生活随笔為你收集整理的python实现快排算法_Python实现快速排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 官方标配是什么意思(xdm是什么意思)
- 下一篇: 方舟手游毛皮怎么获得(方舟生存进化)