def merge(left,right):
#合并数组
i,j=0,0
result=[]
while i<len(left) and j<len(right):
if left[i]<=right[j]:
result.append(left[i])
i+=1
else:
result.append(right[j])
j+=1
result+=left[i:]
result+=right[j:]
return result
def merge_sort(lists):
count=len(lists)
#result=[]
sz=1
while sz<=count//2:
i=0
while i<count-sz:
result[i:i+sz*2]=merge(lists[i:i+sz],lists[i+sz:i+sz*2])
i+=sz*2
sz*=2
return result
http://blog.csdn.net/liujianfeng1984/article/details/47204367