您的位置:首页 > 编程语言 > Python开发

[算法导论]merge sort @ Python

2014-08-17 15:17 471 查看
import sys

class mergesort():

def merge_sort(self, A, p, r):
if p < r:
q = (p + r) / 2
self.merge_sort(A, p, q)
self.merge_sort(A, q+1, r)
self.merge(A, p, q, r)
return A

def merge(self, A, p, q, r):
n1 = q - p + 1
n2 = r - q

L = [0 for i in range(n1+1)]
R = [0 for i in range(n2+1)]

for i in range(n1):
L[i] = A[p+i]
for j in range(n2):
R[j] = A[q+j+1]

L[n1] = sys.maxint
R[n2] = sys.maxint

i = 0; j = 0
for k in range(p, r):
if L[i] <= R[j]:
A[k] = L[i]
i += 1
else:
A[k] = R[j]
j += 1

sort = mergesort()

A = [1,3,5,7,9,2,4,6,8,10]

print sort.merge_sort(A, 0, len(A)-1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: