[DS+Algo] 007 希尔排序及其代码实现
2024-09-05 18:06:35
步骤
- 将数组列在一个表(一行多列)中,按特定的步长进行插入排序
- 步长从 length/2 到 1,每次除 2
- 将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序
算法性能
- (根据步长序列的不同而不同)
- 最优时间复杂度:O(n1.3)
- 最坏时间复杂度:O(n2)
- 稳定想:不稳定
Python 代码示例
def shell_sort(lst):
n = len(lst)
gap = n // 2
while gap > 0:
for i in range(gap, n, gap):
while gap <= i and lst[i] < lst[i-gap]:
lst[i], lst[i-gap] = lst[i-gap], lst[i]
i -= gap
gap //= 2
if __name__ == "__main__":
lst = [randrange(10, 100) for _ in range(10)]
print(">>> before sort:", lst)
shell_sort(lst)
print(">>> after sort :", lst)
最新文章
- ASE周会记录
- ARM 编译 phddns
- 关于博弈论中的一硬币正反问题的分析<;二>;
- hadoop namenode ha--手动切换(转)
- spring配置entitymangerfactory
- Lua 栈中元素的位置
- 转】用Maven构建Mahout项目
- hadoop相关问题
- centos 如何用 rsyslog 搭建本地日志服务(续1: omprog模块与php deamon的配合使用)
- 算法基础:最大递减数问题(Golang实现)
- Java并发之synchronized关键字
- 20岁少年小伙利用Python_SVM预测股票趋势月入十万!
- APICloud &#183; 跨越2018,技术改变世界
- NetScope脱机(localhost)使用[转】
- webstorm更改字体大小
- PLSQL存储过程(基础篇)-转
- Chrome浏览器如何调试移动端网页信息
- Hexo+Github 搭建属于自己的博客(Mac下安装 其他操作系统大同小异)
- 【BZOJ2154】Crash的数字表格
- 关于VS2017的安装和WDK的选择问题