【1.数据结构-1.8.1 排序】插入排序-希尔排序

一、插入排序

1.1 算法思想

每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成

  • 给定数组 :49, 38, 65, 97, 76, 13, 27, 49
  • 第一趟结果 :38, 49, 65, 97, 76, 13, 27, 49,这里是38与49比较,38比49小,交换位置。


  • 第二趟结果 :38, 49, 65, 97, 76, 13, 27, 49
    -
    ...
    ...
    ...
  • 第七趟结果 :13, 27, 38, 49, 49, 65, 76, 97

1.2 算法实现

  • 不带哨兵

  • 带哨兵

1.3 效率分析

  • 空间复杂度
  • 时间复杂度-最好情况
  • 时间复杂度-最坏情况
  • 总结

1.4 优化--折半插入排序

  • 思路 :先用折半查找找到应该插入的位置,再移动元素

  • 当low>high时折半查找停止,应将low,i-1内的元素全部右移,并将A0复制到low 所指位置



    ...
    ...
    ...

  • 代码实现

  • 对链表进行插入排序

1.5 优化

二、希尔排序

2.1 希尔排序:先追求表中元素部分有序,再逐渐逼近全局有序

  • 第一趟



  • 第二趟


  • 第三趟:整个表已呈现出"基本有序",对整体再进行一次"直接插入排序"

2.2 算法实现

2.3 算法性能分析


2.4 总结

相关推荐
GIS数据转换器9 分钟前
地下空间综合管廊运营管理平台
大数据·开发语言·人工智能·经验分享·perl
猿究院_夏燊5 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog5 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
inrichtt5 小时前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
信誓旦旦的程序猿6 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河6 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年6 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88886 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym6 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
HPtiger6 小时前
数据结构——选择排序
数据结构·算法·排序算法