当前位置: 首页 > article >正文

100种算法【Python版】第51篇——希尔排序

本文目录

  • 1 算法步骤
  • 2 算法示例
  • 3 python代码
    • 3.1 代码说明
    • 3.2 复杂度分析
  • 4 算法优化
    • 4.1 Shell 原始增量序列
    • 4.2 Hibbard 增量序列
    • 4.3 Knuth 增量序列
    • 4.4 Sedgewick 增量序列
    • 4.5 Tokuda 增量序列
    • 4.6 Pratt 增量序列
  • 5 不同的增量序列的效率对比

希尔排序(Shell Sort)是插入排序的改进版。它通过比较距离较远的元素来提前进行部分排序,从而减少了后期插入排序的移动次数。希尔排序的主要思想是逐步减少元素之间的间隔(称为增量或步长),直到步长为 1,最终转变为标准的插入排序。

1 算法步骤

(1)选择增量序列:
初始增量 gap 通常设为数组长度的一半(n//2),然后逐渐减小,直到 gap 为 1。

(2)分组排序:
对每一个 gap,将数组分成若干个子序列(每个子序列由相隔 gap 的元素组成),对每个子序列进行插入排序。

(3)减少增量:
每次减小增量 gap,重复分组排序,直到 gap 为 1。在最后一次排序时,整个数组实际上是进行了插入排序。

(4)最终排序:
当 gap 为 1 时,进行一次标准的插入排序,确保数组完全有序。

2 算法示例

假设有一个数


http://www.kler.cn/a/382636.html

相关文章:

  • 2025年XR行业展望:超越虚拟,融合现实
  • Sprint Boot教程之五十:Spring Boot JpaRepository 示例
  • 【Leetcode 热题 100】20. 有效的括号
  • 文献综述拆解分析
  • 【年前假期学SHU分享】:计算机生物学、智能计算、通信、大数据、电子信息工程
  • apex安装
  • Excel怎么转换成word?分享两种方法!
  • 基于matlab的基于Tent混沌映射改进的麻雀搜索算法SSA优化BP神经网络预测
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十八章 Qt控制硬件
  • NLP论文速读|LOGO -- Long context aliGnment via efficient preference Optimization
  • ChatGPT任务设计和微调策略的优化
  • 泉州市工业和信息化局关于开展排查运维安全管理系统安全漏洞的通知
  • #JavaScript 宏任务与微任务详解
  • 2-146 基于matlab的双摆杆系统建模分析
  • Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.
  • 【C语言】实战-力扣题库:回文链表
  • 【LeetCode】【算法】238. 除自身以外数组的乘积
  • Hadoop集群的高可用(HA)-(2、搭建resourcemanager的高可用)
  • dbt 数据分析工程实战教程(汇总篇)
  • Mill:比Maven快10倍的JVM构建工具
  • 如何理解美国总统Trump这个单词
  • 数据库SQL学习笔记
  • OpenCV C++ 计算两幅图像之间的多尺度结构相似性(MSSIM)
  • 前端八股文(三)JS、ES6 持续更新中。。。
  • pycharm小游戏贪吃蛇及pygame模块学习()
  • ORB-SLAM2源码学习:ORBextractor.cc:ComputePyramid构建图像金字塔①