《算法導論》描述算法python說#1

本文全部僞代碼參考自《算法導論(原書第三版)》Thomas H.Cormen等著,殷建平等譯,機械工業出版社。

第2章 算法基礎

分治排序

以前上ACM課的時候老師講過,學長也講過,至於沒聽進去就怪M_E了,其實仍是要怪太依賴STL。python

此次從新理解+拿Python寫了一下,被python的list中C++的vector化有點小坑。算法

 1 import math
 2 def Merge(A,p,q,r):
 3     n1 = q-p+1
 4     n2 = r-q
 5     L = []
 6     R = []
 7     for i in range(n1) :
 8         L.append(A[p+i])
 9     for j in range(n2) :
10         R.append(A[q+j+1])
11     L.append(float("inf"))
12     R.append(float("inf"))
13     i = 0
14     j = 0
15     for k in range(p,r+1):
16         if L[i] <= R[j]:
17             A[k] = L[i]
18             i = i+1
19         else:
20             A[k] = R[j]
21             j = j+1
22     #del L[:]
23     #del R[:]
24     
25 
26 def Merge_Sort(A,p,r):
27     if p < r:
28         q = math.floor((p+r)/2)
29         Merge_Sort(A,p,q)
30         Merge_Sort(A,q+1,r)
31         Merge(A,p,q,r)
32 
33 
34 arr=[1,6,3,2,777,10]
35 Merge_Sort(arr,0,5)
36 print(arr)
相關文章
相關標籤/搜索