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

Python - Merge Sort

2015-10-05 15:07 666 查看
import random

def merge(arr, l, p, r):
left = arr[l: p+1] #copy left part, including p
right = arr[p+1: r+1] #copy right part, start from p+1
i = 0
j = 0
k = l #start from the left
while i < len(left) and j < len(right):
if left[i] < right[j]:
arr[k] = left[i]
i = i + 1
else:
arr[k] = right[j]
j = j + 1
k = k + 1
while i < len(left):
arr[k] = left[i]
i = i + 1
k = k + 1
while j < len(right):
arr[k] = right[j]
j = j + 1
k = k + 1

def merge_sort(arr, l, r):
if l < r:
p = int((l + r) / 2)
merge_sort(arr, l, p) #sort [1, p]
merge_sort(arr, p+1, r) #sort[p + 1 ... end]
merge(arr, l, p, r)

if __name__ == '__main__':
sample = [random.randrange(0, 100, 1) for i in range(10)]
original = sample[:]
print('Before: %s'%original)
merge_sort(sample, 0, len(sample)-1)
print('After: %s'%sample)
print('Corrected: %s'%(sample == sorted(original)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: