python数据结构之希尔排序
python数据结构之希尔排序
#-*-coding:utf-8-*-
'''
将序列划分为两部分,将这两部分依次比较,若前大后小,则交换。
将步长除以2(向下取整),直到步长=0,依次比较。
'''
def ShellSort(L):
step = len(L)//2 # 设定步长,Python2则用/
while step > 0:
print('step = ' + repr(step))
for i in range(step, len(L)):
while i >= step and L[i-step] > L[i]:
print('i=' + repr(i) + ' i-step=' + repr(i-step))
print(repr(L[i]) + '<-->' + repr(L[i-step]))
L[i], L[i-step] = L[i-step], L[i]
print(L)
i -= step
step = step//2
return L
L = [5,4,2,3,6,1,0]
print("原始序列:")
print(L)
print("希尔排序:")
print(ShellSort(L))
程序输出结果:
原始序列:
[5, 4, 2, 3, 6, 1, 0]
希尔排序:
step = 3
i=3 i-step=0
3<-->5
[3, 4, 2, 5, 6, 1, 0]
i=5 i-step=2
1<-->2
[3, 4, 1, 5, 6, 2, 0]
i=6 i-step=3
0<-->5
[3, 4, 1, 0, 6, 2, 5]
i=3 i-step=0
0<-->3
[0, 4, 1, 3, 6, 2, 5]
step = 1
i=2 i-step=1
1<-->4
[0, 1, 4, 3, 6, 2, 5]
i=3 i-step=2
3<-->4
[0, 1, 3, 4, 6, 2, 5]
i=5 i-step=4
2<-->6
[0, 1, 3, 4, 2, 6, 5]
i=4 i-step=3
2<-->4
[0, 1, 3, 2, 4, 6, 5]
i=3 i-step=2
2<-->3
[0, 1, 2, 3, 4, 6, 5]
i=6 i-step=5
5<-->6
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6]
作者:
tongqingliu
出处: http://www.cnblogs.com/liutongqing/
本文版权归作者和博客园共有,欢迎转载、交流,但未经作者同意必须保留此段声明,且在文章明显位置给出原文链接。
如果觉得本文对您有益,欢迎点赞、欢迎打赏。
出处: http://www.cnblogs.com/liutongqing/
本文版权归作者和博客园共有,欢迎转载、交流,但未经作者同意必须保留此段声明,且在文章明显位置给出原文链接。
如果觉得本文对您有益,欢迎点赞、欢迎打赏。


分类:
Python
, Data Structure
posted on 2017-09-21 22:07 tongqingliu 阅读(232) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构