合并排序(Python)
作者:dawncold 发布时间:February 2, 2012 分类:技术
#! /usr/bin/env python
# coding: utf-8
def merge(arraylist, first, middle, last):
temp = []
i = first
j = middle + 1
while i <= middle and j <= last:
if arraylist[i] <= arraylist[j]:
temp.append(arraylist[i])
i += 1
else:
temp.append(arraylist[j])
j += 1
while i <= middle:
temp.append(arraylist[i])
i += 1
while j <= last:
temp.append(arraylist[j])
j += 1
for i in range(0, last - first + 1):
arraylist[first + i] = temp[i]
def merge_sort(arraylist, first, last):
if first < last:
middle = (first + last) / 2
merge_sort(arraylist, first, middle)
merge_sort(arraylist, middle + 1, last)
merge(arraylist, first, middle, last)
if __name__ == "__main__":
arr = [33, 31, 0, 42, 425, 21, 34, 19]
print arr
merge_sort(arr, 0, len(arr) - 1)
print arr
谢谢这里的帮助,我自己照着《算法导论》写了好久都出错,哎,自己在这类问题上有点笨。