python實現歸併排序演算法

2022-10-04 05:33:13 字數 1093 閱讀 2859

歸併排序是典型的分治法的應用

思想:先遞迴分解陣列,再合併陣列

原理:將陣列分解最小之後,然後合併兩個有序陣列,基本思想是比較兩個陣列的最前面的數,誰小就取誰,取完後,將相應的指標後移以為。然後再比較,直到乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。

**實現:

#歸併排序

def merge_sort(alist):

if len(alist) <= 1:

return alist

# 二分分解

num = len(alist) / 2

left = merge_sort(alist[:num])

right = merge_sort(apyueialist[num:])

# 合併

return merge(left, right)

def merge(left, rightpyueia):

'''合併操作,將兩個有序陣列left和right合併成乙個大的有序陣列'''

# left與right的下標指標

l, r = 0, 0

result =

while l < len(left) and r < len(right):

if left[l] < right[r]:

result.append(left[l])

l += 1

else:

result.append(right[r])

r += 1

result += left[l:]

result += right[r:]

return result

alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]

sorted_alist = merge_sort(alist)

print(sorted_alist)

時間複雜度:

最優時間複雜度:o(nlongn)

最壞時間複雜度 :o(nlongn)

穩定性:穩定

本文標題: python實現歸併排序演算法

本文位址: /jiaoben/python/245276.html

python實現排序演算法二 歸併排序

歸併排序 基本思想 對於兩個排好序的陣列a和b,逐一比較a和b的元素,將較小值放入陣列c中,當a或者b陣列元素查詢完後,將a或者b剩餘的元素直接新增到c陣列中,此時c陣列即為有序陣列,這就是歸併排序原理 step1 對於乙個無序陣列a,可以取a元素中間索引,將a陣列分為兩個部分a1,a2 step2...

python排序演算法實現 (五)歸併排序

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

經典排序演算法 歸併排序 python實現

歸併排序 利用歸併的思想實現的排序方法,該演算法採用經典的分治策略。分治法 將問題分成一些小的問題然後遞迴求解,而治則是將分的階段得到的各答案拼接在一起,即分而治之。演算法思想步驟 先將需排序的陣列遞迴分解進行排序,後合併有序陣列 1.遞迴分解,基本思路是將陣列分解成left和right 2.如果這...