归并排序

 1 def merge_(li, start, mid, end):
 2     i = start
 3     j = mid + 1
 4     ltmp = []
 5     while j <= end and i <= mid:
 6         if li[i] < li[j]:
 7             ltmp.append(li[i])
 8             i += 1
 9         else:
10             ltmp.append(li[j])
11             j += 1
12     while i <= mid:
13         ltmp.append(li[i])
14         i += 1
15     while j <= end:
16         ltmp.append(li[j])
17         j += 1
18     li[start:end+1] = ltmp
19 
20 def mergesort(li, start, end):
21     if start < end:
22         mid = (start+end) // 2
23         mergesort(li, start, mid)
24         mergesort(li, mid+1, end)
25         merge_(li, start, mid, end)
26         print(li[start:end+1])
27 
28 li = list(range(8))
29 import random
30 random.shuffle(li)
31 print(li)
32 mergesort(li, 0, len(li)-1)
33 print(li)

归并排序

 

上一篇:Python-字典合并


下一篇:【转】Java 8 中 Map 骚操作之 merge() 的用法