本文实例讲述了Python排序搜索基本算法之希尔排序。分享给大家供大家参考,具体如下:
希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率。希尔排序最关键的是选择步长,本程序选用Knuth在1969年提出的步长序列:1 4 13 40 121 364 1093 3280 。。。后一个元素是前一个元素*3+1,非常方便选取,而且效率还不错。代码如下:
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 -*- def shellSort(seq): length = len (seq) inc = 0 while inc< = length / 3 : inc = inc * 3 + 1 print (inc) while inc> = 1 : for i in range (inc,length): tmp = seq[i] for j in range (i, 0 , - inc): if tmp<seq[j - inc]: seq[j] = seq[j - inc] else : j + = inc break seq[j - inc] = tmp inc / / = 3 if __name__ = = '__main__' : print ( "服务器之家测试结果:" ) seq = [ 8 , 6 , 4 , 9 , 7 , 3 , 2 , - 4 , 0 , - 100 , 99 ] shellSort(seq) print (seq) |
运行结果:
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/littlethunder/article/details/9472055