排序系列-歸併排序

這個算法感受有點兒 空間換時間的感受,由於他的分治策略,在使用分佈式,或者並行運算的時候應該有很大的發揮空間。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])
相關文章
相關標籤/搜索