排序系列-归并排序

这个算法感受有点儿 空间换时间的感受,由于他的分治策略,在使用分布式,或者并行运算的时候应该有很大的发挥空间。html

 

视频讲解 C语言版python

http://v.youku.com/v_show/id_XNjg1NTQzNTg4.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0#paction算法

归并排序是创建在归并操做上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer的一个很是典型的应用。app

将已有序的子序列合并,获得彻底有序的序列;即先使每一个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并分布式

http://v.youku.com/v_show/id_XNjg1NTQzNTg4.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 ide

# -*- coding: UTF-8 -*- 
'''
Created on 2016年11月28日

@author: llg
归并排序
采用递归的方式,进行排序
'''
def MergeSort(lists):
    if len(lists) <= 1:
        return lists
    num = int( len(lists)/2 )
    
    left = MergeSort(lists[:num])
    
    right = MergeSort(lists[num:])
    
    return Merge(left, right)
def Merge(left,right):
    r, l=0, 0
    result=[]
    while l<len(left) and r<len(right):
        if left[l] < right[r]:
            result.append(left[l])
            l += 1
        else:
            result.append(right[r])
            r += 1
    result += right[r:]
    result += left[l:]
    return result

print MergeSort([1, 10, 3, 4, 5, 116, 7, 90, 21, 23, 45])
相关文章
相关标签/搜索