步骤

  • 将数组列在一个表(一行多列)中,按特定的步长进行插入排序
  • 步长从 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)

最新文章

  1. ASE周会记录
  2. ARM 编译 phddns
  3. 关于博弈论中的一硬币正反问题的分析&lt;二&gt;
  4. hadoop namenode ha--手动切换(转)
  5. spring配置entitymangerfactory
  6. Lua 栈中元素的位置
  7. 转】用Maven构建Mahout项目
  8. hadoop相关问题
  9. centos 如何用 rsyslog 搭建本地日志服务(续1: omprog模块与php deamon的配合使用)
  10. 算法基础:最大递减数问题(Golang实现)
  11. Java并发之synchronized关键字
  12. 20岁少年小伙利用Python_SVM预测股票趋势月入十万!
  13. APICloud &#183; 跨越2018,技术改变世界
  14. NetScope脱机(localhost)使用[转】
  15. webstorm更改字体大小
  16. PLSQL存储过程(基础篇)-转
  17. Chrome浏览器如何调试移动端网页信息
  18. Hexo+Github 搭建属于自己的博客(Mac下安装 其他操作系统大同小异)
  19. 【BZOJ2154】Crash的数字表格
  20. 关于VS2017的安装和WDK的选择问题

热门文章

  1. java 乱码
  2. stdarg的使用
  3. spring boot 配置HTTPS
  4. HTTS TTLS 433
  5. JPA学习(六、JPA_JPQL)
  6. 小程序的image图片显示
  7. 关于Struts2_2.3.24中FilterDispatcher过期的问题
  8. Gridview中显示的值根据数据库中带出的值作更改
  9. 在WCF程序中动态修改app.config配置文件
  10. 五、RF中UI自动化操作基础