"""
歸併排序是採用分治法的乙個非常典型的應用。歸併排序的思想就是先遞迴分解陣列,再合併陣列。
將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先
取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩
餘部分複製過來即可。
"""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...