Python歸併演算法原理和實現

2021-10-10 20:23:11 字數 845 閱讀 5746

"""

歸併排序是採用分治法的乙個非常典型的應用。歸併排序的思想就是先遞迴分解陣列,再合併陣列。

將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先

取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩

餘部分複製過來即可。

"""def merge_sort(mlist):

if len(mlist) <=1:

return mlist

#遞迴分解

interval = len(mlist) // 2

left = merge_sort(mlist[0:interval])

right = merge_sort(mlist[interval:])

#遞迴合併

return merge(left,right)

def merge(left,right):

l,r = 0,0

res =

while l < len(left) and r if left[l] < right[r]:

l += 1

else:

r += 1

res += left[l:]

res += right[r:]

return res

if __name__ == '__main__':

my_list = [35, 20, 15, 18, 45, 14, 20,77, 98, 66, 82]

res_list = merge_sort(my_list)

print(res_list)

python實現歸併演算法

歸併排序是採用分治法的乙個非常典型的應用,另乙個可以採用分治法的是快速排序,歸併演算法比快速排序速度稍低。歸併排序的思想就是先遞迴分解陣列,再合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為...

wrr演算法原理和python實現

令牌輪詢 平滑最大權重 平滑最大權重演算法 平滑最大權重示例 演算法比較 在測試各種負載均衡時,總會看到wrr演算法,為每個後端rs real server 設定乙個權重值,根據權重值比例來向rs 比如如下負載均衡,後端rs1,rs2,rs3權重值分別為40,30,20,客戶端過來的請求,負載均衡按...

Python 歸併排序 原理及實現

原理參考 實現 n 5 nums 3,1,2,4,5 def mergesort l,r if l r return 長度小於等於1,無需排序,返回 mid l r 1 mergesort l,mid mergesort mid 1,r tmp nums l r 1 用來暫時儲存 k,i,j 0,l...