Python 希尔排序
来源:互联网 发布:在access数据库中 表是 编辑:程序博客网 时间:2024/05/29 15:20
基本思想
设a=[9, 8, 7, 6, 5, 4, 3, 2, 1],若要用直接插入排序,元素移动的次数很多,希尔排序是针对直接插入排序的改进。
1. 选择一个初始步长 d(一般取 n/2,自定义),将序列中相隔d的元素进行排序
2. 新步长 d = d / 2(步长d的选取有不同规定,有的是 d/2,有的是 d/2 的基础上只取奇数,偶数就+1),依然将序列中相隔d的元素进行排序,直到 d = 1,此时的排序已经是直接插入排序了。
示意图如下,初始步长为 n/2,后面的步长在 n/2 的基础上采用奇数:
Python实现
def shellSort(a):# 希尔排序: 小->大# 对d的选取各有规定,本文以d/2为例 n = len(a) d = n / 2 while d > 0: for i in xrange(d, n): index = a[i] j = i - d while j >= 0 and a[j] > index: a[j + d] = a[j] j -= d a[j + d] = index d = d / 2 return a
效率
与步长的选取有关
O(n1+£),0<£<1
参考资料
http://blog.csdn.net/hguisu/article/details/7776068
http://www.cnblogs.com/xkfz007/archive/2012/07/01/2572017.html
0 0
- [排序] 希尔排序(Python)
- 希尔排序--Python实现
- [Python-*-算法]希尔排序
- Python 希尔排序
- Python 希尔排序
- python实现希尔排序
- Python希尔排序算法
- 希尔排序--Python
- 希尔排序 Python实现
- python实现希尔排序
- 希尔排序Python实现
- Python实现希尔排序
- python实现希尔排序
- Python排序算法-希尔排序
- 排序算法(python)-希尔排序
- 希尔排序的Python实现
- python数据结构之希尔排序
- 希尔排序算法 Python实现
- [编程好习惯] 精确包含头文件(转)
- WebLogic Enterprise JavaBean 编程
- java读取.properties配置文件的几种方法 .
- js正则表达式验证手机号,邮箱,QQ,密码
- VS.添加不了引用Microsoft.Office.Interop
- Python 希尔排序
- SecureCRT 常用命令
- Session Bean
- BPM助企业提升执行力
- Spring3+mybatis3上传图片保存至Sqlserver中和图片显示在网页
- OpenCV基础篇之读取显示图片
- 外部EEPROM,IIC总线和EEPROM通信技术
- C++简易list
- 工作日志