演算法導論 python實現歸併排序

2021-10-04 17:52:17 字數 1154 閱讀 2332

def

merge

(a, p, q, r)

: n1 = q - p +

1 n2 = r - q

l =list

(range

(n1 +1)

) r =

list

(range

(n2 +1)

)for i in

range(0

, n1)

: l[i]

= a[p + i]

for j in

range(0

, n2)

: r[j]

= a[q + j +1]

l[n1]

=10000

#這裡可以使用無窮大/也可以使用乙個比陣列最大的元素大的值

r[n2]

=10000

i =0 j =

0for k in

range

(p, r+1)

:if l[i]

<= r[j]

: a[k]

= l[i]

i = i +

1else

: a[k]

= r[j]

j = j +

1def

mergesort

(a, p, r)

:if p < r:

q =int(

(p+(r-1)

)/2)

mergesort(a,p,q)

mergesort(a,q+

1,r)

merge(a,p,q,r)

return a

a =[

]

n =int

(input

("請輸入你需要排序的陣列的長度:"))

for i in

range(0

, n)

: b =

int(

input

("請依次輸入你需要排序的陣列元素:"))

print

(mergesort(a,0,

len(a)-1

))

演算法導論 歸併排序

public class mergesort mergesort data,0,中間 mergesort data,中間,最後 merge data,0,最後 system.out.println 排序前 for int i 0 i9 i 10 0 system.out.println system...

演算法導論 歸併排序

演算法的設計有很多思想,之前的插入排序使用的是增量的方法,即在排好的子陣列a中,將元素a j 插入,形成新的子陣列a。這次將實現另一種排序 歸併排序,歸併排序採用了 分治法 divide and conquer 本篇中包含 分治法,也可以稱為分治策略 是將乙個大規模的問題 原問題 劃分成n個規模較小...

演算法導論 歸併排序

歸併排序的步驟分為三個 將問題分解為更小的問題,然後解決小問題,將小問題合併為大問題的解。針對歸併排序的主要思想是 將乙個需要排序的陣列一分為二,然後將這兩部分進行單獨排序,然後將這兩個排好序的子數組合然後按照順序合併為大陣列。還有乙個就是邊界問題,將陣列無限的分下去知道最後的子陣列只剩乙個元素的時...