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

相关推荐
点心的游戏开发世界43 分钟前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
phltxy1 小时前
C语言操作符详解
java·c语言·算法
aqiu1111111 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
步行cgn2 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl2 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
事圆则缓3 小时前
Kotlin 协程完全指南
开发语言·kotlin
我爱写代码i3 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路3 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
嘿嘿-664 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
统计学小王子4 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言