##歸併排序
##基本思想:對於兩個排好序的陣列a和b,逐一比較a和b的元素,將較小值放入陣列c中,當a或者b陣列元素查詢完後,將a或者b剩餘的元素直接新增到c陣列中,此時c陣列即為有序陣列,這就是歸併排序原理
##step1:對於乙個無序陣列a,可以取a元素中間索引,將a陣列分為兩個部分a1,a2;
##step2:遞迴a1,a2,分別將a1,a2分為a11,a12和a21,a22兩部分直至只有乙個元素;
##step3:對於只有乙個元素的陣列來講,其是有序的,因此,對於兩個只有乙個元素的陣列,可以根據基本思想所述合成乙個陣列c,最後得到有序陣列
**如下:
##歸併排序
def merge(left, right):
l = 0
r = 0
result =
while l < len(left) and r < len(right):
if left[l] < right[r]:
l += 1
else:
r += 1
result += left[l:]
result += right[r:]
return result
def mergesort(array):
if len(array) <= 1:
return array
num = int(len(array)/2)
left = mergesort(array[:num])
right = mergesort(array[num:])
return merge(left, right)
if __name__ == '__main__':
b = [1, 22, 90, 4, 65, 3, 73, 8]
print(b)
a = mergesort(b)
print(a)
python實現歸併排序演算法
歸併排序是典型的分治法的應用 思想 先遞迴分解陣列,再合併陣列 原理 將陣列分解最小之後,然後合併兩個有序陣列,基本思想是比較兩個陣列的最前面的數,誰小就取誰,取完後,將相應的指標後移以為。然後再比較,直到乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。實現 歸併排序 def merge so...
python排序演算法實現 (五)歸併排序
歸併排序是採用分治法的乙個非常典型的應用。歸併排序的思想就是先遞迴分解陣列,再合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。def merge ...
經典排序演算法 歸併排序 python實現
歸併排序 利用歸併的思想實現的排序方法,該演算法採用經典的分治策略。分治法 將問題分成一些小的問題然後遞迴求解,而治則是將分的階段得到的各答案拼接在一起,即分而治之。演算法思想步驟 先將需排序的陣列遞迴分解進行排序,後合併有序陣列 1.遞迴分解,基本思路是將陣列分解成left和right 2.如果這...