Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175347
  • 博文数量: 42
  • 博客积分: 2185
  • 博客等级: 大尉
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-11 21:32
文章分类

全部博文(42)

文章存档

2012年(5)

2011年(13)

2010年(6)

2009年(18)

我的朋友

分类: LINUX

2009-11-29 21:10:30

01 merge sort - python


def merge(A, B):
    C = []
    la = len(A)
    lb = len(B)
    ln = la + lb
    j = 0
    k = 0

    for i in range(ln):
        if j >= la:
            C.append(B[k])
            k += 1
            continue;
        if k >= lb:
            C.append(A[j])
            j += 1
            continue;
        if A[j] > B[k]:
            C.append(B[k])
            k += 1
        else:
            C.append(A[j])
            j += 1

    return C

def merge_sort(array):
    ln = len(array)
    mid = ln // 2

    if ln <= 1:
        return array

    left = merge_sort(array[:mid])
    right = merge_sort(array[mid:])

    return merge(left, right)

if __name__ == '__main__':
    import random

    L = [random.randrange(10, 99) for x in range(20)]
    print merge_sort(L)


阅读(993) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~