原理简介:

归并排序是在归并的操作基础上采用分治法的排序方法;归并操作就是将两个有序的子列合并成一个有序总列,分治法就是通过二分法将序列不断分成子列。

python 代码:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
from random import randint

#generate a unsorted list
origin = []
def randomList():
    for i in xrange(0,10,1):
        origin.append(randint(-10,10))
    # print origin

def merge(origin,left,middle,right):
    leftarray = origin[left:middle+1]
    rightarray = origin[middle+1:right+1]
    lindex = 0
    rindex = 0
    index = left
    while lindex < len(leftarray) and rindex < len(rightarray):
        if leftarray[lindex] < rightarray[rindex]:
            origin[index] = leftarray[lindex]
            lindex += 1
        else:
            origin[index] = rightarray[rindex]
            rindex += 1
        index += 1
    while lindex < len(leftarray):
        origin[index] = leftarray[lindex]
        index += 1
        lindex += 1
    while rindex < len(rightarray):
        origin[index] = rightarray[rindex]
        index += 1
        rindex += 1

def merge_sort(origin,begin,end):
    if begin < end:
        middle = (end + begin)/2
        merge_sort(origin, begin, middle)
        merge_sort(origin, middle + 1, end)
        merge(origin, begin, middle, end)

if __name__ == '__main__':
    randomList()
    print origin
    merge_sort(origin, 0, len(origin)-1)
    print origin

jke_zq
50 声望2 粉丝