《算法导论》描述算法python说#1

本文所有伪代码参考自《算法导论(原书第三版)》Thomas H.Cormen等著,殷建平等译,机械工业出版社。

第2章 算法基础

分治排序

之前上ACM课的时候老师讲过,学长也讲过,至于没听进去就怪M_E了,其实还是要怪太依赖STL。

这次重新理解+拿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)

 

posted @ 2019-10-07 23:04  tudouuuuu  阅读(281)  评论(0编辑  收藏  举报