【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 总结

相关推荐
何以解忧,唯有..8 分钟前
SpringBoot 中 @Transactional 注解失效的 8 种常见场景与解决方案
java
SL-staff17 分钟前
AB测试数据失真根因与变量热替换实战:JVS-Rules函数计算器架构解析
java·运维·微服务·函数式编程·规则引擎·变量管理·营销技术
Irene199119 分钟前
Java 3 天入门:“最小必要知识”的功利性学法
java
长谷深风11126 分钟前
Agent 何时该 Replan:五个关键判断
java·大数据·开发语言·ai agent·ai智能体·agent设计·clarify机制
lingran__32 分钟前
C++ STL unordered系列(哈希) 底层剖析与模拟实现万字详解 | 基于哈希表,复刻 SGI-STL 泛型哈希容器架构
开发语言·c++·后端·哈希算法·哈希表·泛型编程·unordered系列
布莱克60536 分钟前
理解B+树:原理、特性与应用场景
数据结构·数据库·mysql
阿弱1 小时前
graph-core 的边与命令模式设计
java·后端·agent
互联网中的一颗神经元1 小时前
01. Go 内存管理全景架构
java·jvm·golang
萧瑟余晖1 小时前
Java深入解析篇三十四之分布式事务
java·开发语言·分布式