本文实例讲述了Python实现的归并排序算法。分享给大家供大家参考,具体如下:
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
Python实现代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#-*- coding: UTF-8 -*-
import numpy as np
def Merge(a, f, m, l):
i = f
j = m + 1
tmp = []
while i < = m and j < = l:
if a[i] < = a[j]:
tmp.append(a[i])
i + = 1
else :
tmp.append(a[j])
j + = 1
while i < = m:
tmp.append(a[i])
i + = 1
while j< = l:
tmp.append(a[j])
j + = 1
i = f
for x in xrange ( 0 , len (tmp)):
a[i] = tmp[x]
i + = 1
def MergeSort(a, f, l):
if f< l:
m = (l + f) / 2
MergeSort(a, f, m)
MergeSort(a, m + 1 , l)
Merge(a, f, m, l)
if __name__ = = '__main__' :
a = np.random.randint( 0 , 10 , size = 10 )
print "Before sorting..."
print "---------------------------------------------------------------"
print a
print "---------------------------------------------------------------"
MergeSort(a, 0 , a.size - 1 )
print "After sorting..."
print "---------------------------------------------------------------"
print a
print "---------------------------------------------------------------"
|
运行结果:
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/biaoyu/p/4831644.html