NB二人組(二) 歸併排序

2022-03-17 08:27:24 字數 1986 閱讀 8146

歸併排序的思路:

歸併演算法程式(配合下圖進行思考):

左邊有數 且 右邊也有數

if li[i] < li[j]: #

左邊小於右邊

把左邊的數 新增到 ltmp 這個列表中

i += 1 #

右移一位

else:#

右邊小於左邊

j += 1 #

右移while i <= mid: #

如果左邊有剩餘

將剩餘的加入ltmp列表

i += 1 #

右移while j <= high: #

如果右邊有剩餘

將剩餘的加入ltmp列表

j += 1 #

右移 li[low:high+1] = ltmp #

將ltmp這個列表裡的數 傳給 li 這個列表

li = [1,4,6,7,9,2,3,5,8]

merge(li,0,4,8)

print(li)

列印出來的效果圖為:

有了歸併怎麼用?

左邊有數 且 右邊也有數

if li[i] < li[j]: #

左邊小於右邊

把左邊的數 新增到 ltmp 這個列表中

i += 1 #

右移一位

else:#

右邊小於左邊

j += 1 #

右移while i <= mid: #

如果左邊有剩餘

將剩餘的加入ltmp列表

i += 1 #

右移while j <= high: #

如果右邊有剩餘

將剩餘的加入ltmp列表

j += 1 #

右移 li[low:high+1] = ltmp #

將ltmp這個列表裡的數 傳給 li 這個列表

defmergesort(li,low,high):

if low

mid = (low + high) // 2mergesort(li,low,mid)

#先分解

mergesort(li,mid+1,high) #

先分解 merge(li,low,mid,high) #

在合併li = [1,4,6,7,9,2,3,5,8,]

mergesort(li,0,8)

print(li)

函式週期表丨篩選丨值丨HASONE二人組

hasonefilter函式與hasonevalue函式 嚴格來說,hasonefilter函式與hasonevalue函式屬於 篩選判斷 類函式,隸屬於 值 函式,當符合條件時,結果返回true或false。用途 通常用來去掉總計欄合計。語法 語法1 dax hasonefilter 列 等同於以...

Algorithm(二) 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。歸併排序 歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用 分治法 divide and conquer 的乙個非常典型...

排序演算法(二) 歸併排序

歸併排序 mergesort 是大神馮諾依曼研發的一款高效且穩定的排序演算法,據資料顯示,python自帶排序函式用的就是歸併排序。其穩定性和效率肯定是毋庸置疑的了,學好歸併排序非常有用,是多路歸併排序的功底課 多路歸併排序在海量資料環境下記憶體不足是非常有用 時間複雜度 o n logn 空間複雜...