本文实例讲述了Python实现希尔排序算法的原理与用法。分享给大家供大家参考,具体如下:
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。
希尔排序的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。(插入排序可参考前面一篇Python插入排序算法)
Python实现代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#-*- coding: UTF-8 -*- import numpy as np def ShellSort(a): gap = a.size / 2 while gap > = 1 : for i in xrange (gap,a.size, gap): for j in xrange (i, 0 , - gap): if a[j - gap] > a[j]: a[j - gap] , a[j] = a[j], a[j - gap] else : break gap / = 2 if __name__ = = '__main__' : a = np.random.randint( 0 , 10 , size = 10 ) print "Before sorting..." print "---------------------------------------------------------------" print a print "---------------------------------------------------------------" ShellSort(a) print "After sorting..." print "---------------------------------------------------------------" print a print "---------------------------------------------------------------" |
运行结果:
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/biaoyu/p/4831657.html