数据结构--插入排序

一、算法思想:

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

例如:把13拿出来不断的进行比较再左移

二、代码实现(一):每一个元素拿出来与它的前后进行对比

用 temp 存储当前拿出来的元素:防止操作时候被覆盖

注意循环中的:

复制代码
for(j=i-1;j>=0 && A[j] > temp; --j)
{
    A[j+1] = A[j]  //j+1 == i(当前处理的元素位置)  j == i-1(这个大于当前处理元素的元素位置)
 }                 //前一位赋值给后一位
  
 A[j+1] = temp

代码实现(二):哨兵实现

把当前处理的元素放到最开头 A0 的位置

三、算法的空间复杂度:

O(1): 因为我们用的方法不是temp就是哨兵,都是常数级别的,所以所占的空间就是1

四、算法的时间复杂度:

O(n) : 需要 n-1 趟的对比判断------最好的情况下

O(n²):------ 原本就是逆序排列的 ------最坏的情况下

五、优化操作

(图中蓝色数字是要插入的元素,

绿色是已经有的序列,

红色是复制要插入的元素)

折半查找

例如处理60 的时候

第一个被检查的位置是50

50 < 60

low = mid + 1

mid = (low + high) / 2 -----检查的是60

60 == 60 ------- 当找到当前处理元素的值相同时,继续在mid所指右边查找

当high < low 的时候,停止查找

六、对链表的插入排序

相关推荐
wuyk55511 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表
郝学胜-神的一滴11 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
疯狂打码的少年12 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法
wabs66612 小时前
关于图论【A*算法 | 卡码网127.骑士的攻击的思考】
数据结构·算法·图论·卡码网·广搜的改进版
凉茶钱13 小时前
【数据结构】堆的应用
c语言·数据结构
间歇性努力持续性发呆的野生快乐选手14 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
m0_5474866614 小时前
《数据结构与算法》全套PPT课件2026(中国海洋大学)
数据结构·算法
旖旎夜光14 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
我变成萤火虫16 小时前
河南萌新联赛2026第(三)场:郑州轻工业大学
数据结构·c++·算法·贪心算法·stl·深度优先·哈希算法
白狐_79817 小时前
408数据结构第7章:B树①——基础概念与结构
数据结构·b树