合并排序(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
             

谢谢这里的帮助,我自己照着《算法导论》写了好久都出错,哎,自己在这类问题上有点笨。