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

相关推荐
用户9168422027414 小时前
Spring Boot application.yml 最全避坑与多环境配置
java·后端
weixin_4617694014 小时前
通过数组和队列构造二叉树方法(用于算法测试),C++ vector不能直接使用null
数据结构·c++·算法·vector·nullptr·null
kobe_t14 小时前
‌Spring AI
java
caimouse15 小时前
Reactos 第 4 章 对象管理 — 4.1 对象与对象目录
服务器·c语言·开发语言·windows·架构
千寻girling15 小时前
一周没跑步了 ,今日跑步 5KM , 哑铃+健身 20min , 俯卧撑 30 个 ;
数据结构·c++·python·算法·leetcode·职场和发展·线性回归
专注API从业者15 小时前
电商选品效率翻倍!基于 Open Claw + 淘宝商品 API 实现自动化监控选品(附完整可运行代码)
大数据·运维·数据结构·数据库·自动化
半兽先生15 小时前
flv.js解决其中一个监控断线导致其他的监控播放阻塞
开发语言·javascript·ecmascript
小糯米60115 小时前
C语言 动态内存管理
c语言·开发语言
say_fall15 小时前
可编程中断控制器8259A工作方式超详细解析
android·开发语言·学习·硬件架构·硬件工程
骄马之死15 小时前
Spring 核心知识点(IOC + AOP + 事务)
java·后端·spring