排序算法之希尔排序的python实现
2024-09-01 03:58:23
希尔排序(Shell’s Sort)是插入排序的一种,是直接插入排序算法的一种更高版本的改进版本。
希尔排序的工作原理
如下:
(1)把记录按步长gap分组,对每组记录采用直接插入排序方法进行排序;
(2)随着步长逐渐减小,所分成的组包含的记录越来越多;
(3)当步长值减小到1时,整个数据合成一组,构成一组有序记录,完成排序;
代码实现如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "hsz" def shell_sort(alist):
step = len(alist) // 2
while step > 0:
for i in range(step, len(alist)):
# 在索引为step到len(L)上,比较L[i]和L[i-step]的大小
while i >= step and alist[i] < alist[i - step]:
# 这里可以调整step从小到大或者从大到小排列
alist[i], alist[i - step] = alist[i - step], alist[i]
i -= step
step //= 2 if __name__ == "__main__":
li = [1, 3, 2, 32, 5, 4]
print(li)
shell_sort(li)
print(li)
最新文章
- android xml特殊字符
- Ajax 传统的异步登陆
- Wix: Using Patch Creation Properties - Small Update
- 关于$.fn
- java 自制类加载器的简单实现
- $.each()方法详解
- js 模拟QQ聊天窗口图片播放效果(带滚轮缩放)
- 连接pgsql
- 使用block函数的基本形式
- 201521123113《Java程序设计》第14周学习总结
- 学习phalcon框架按照官网手册搭建第一个项目注册功能
- wpf中静态资源和动态资源的区别
- 格子刷油漆【动态规划问题】—NYOJ 980
- 关于VB里判断逻辑的说明
- ESP-EYE V2.1 开发板 WINDOWS 10 开发入门
- 设计模式---策略模式Strategy(对象行为型)
- SQLserver如何创建一个表
- eclipse安装可视化swing插件
- Java 基本数据类型 sizeof 功能
- python之模块calendar(汇集了日历相关的操作)
热门文章
- Chrome 提标 您的浏览器限制了第三方Cookie...解决方法
- bootstrap资料索引
- Linux - Shell - 算数表达式 - 位运算
- (转)http 之session和cookie
- c#中convert.toInt32和int.parse()和强制类型转换的区别
- OpenCV图像载入、显示和输出到文件以及滑块的使用
- Java中怎么把科学计数法显示出全部数字
- java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
- NOIP2012 疫情控制 题解(LuoguP1084)
- 安装apache ActiveMQ