python

超轻量级php框架startmvc

Python实现的归并排序算法示例

更新时间:2020-05-11 21:18:01 作者:startmvc
本文实例讲述了Python实现的归并排序算法。分享给大家供大家参考,具体如下:归并排序是

本文实例讲述了Python实现的归并排序算法。分享给大家供大家参考,具体如下:

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

Python实现代码如下:


#-*- 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 归并排序 算法