数据结构:直接插入排序

直接插入排序是数据结构中较为简单的插入排序法,基本思想是:把待排序的记录按照关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插完为止,得到一个新的有序序列。

实际上我们玩扑克时,就用了插入排序的思想。我们将每一张新摸到的牌都插入到自己的牌里,使其形成从大到小的排列。

下面我们用代码来实现一下,不同的是将一个乱序的数组排列成一个有序的。

创建一个end变量让其指向数组中下标为0的元素,也就是第一个元素,再让tmp被赋值为指end+1下标的元素,也就是第二个元素,然后进入while循环,如果tmp < arr[end],就让end指向的元素走向end+1处,将其覆盖,并且end--,持续遍历,如果end越界了(end<0),直接跳出,将tmp覆盖掉end+1指向的下标元素,也就是下标为0的元素处。

当tmp走到最后一个元素的时候,此时刚好循环到第八次(因为tmp是从数组第二个元素为起点往后走的),如果在走一次就会越界,所以我们for循环中结束条件为 i < n-1 。

下面我们来看一下结果:

直接插入排序特性总结:

  1. 元素集合越接近有序,直接插入排序算法时间效率越高
  2. 时间复杂度:O(N^2)
  3. 空间复杂度:O(1)
相关推荐
追随者永远是胜利者2 分钟前
(LeetCode-Hot100)4. 寻找两个正序数组的中位数
java·算法·leetcode·职场和发展·go
追随者永远是胜利者4 分钟前
(LeetCode-Hot100)2. 两数相加
java·算法·leetcode·go
初夏睡觉10 分钟前
每日一题( P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two)(第二天)
算法
L_Aria19 分钟前
3824. 【NOIP2014模拟9.9】渴
c++·算法·图论
gorgeous(๑>؂<๑)19 分钟前
【ICLR26-Oral Paper】透过对比的视角:视觉语言模型中的自改进视觉推理
人工智能·算法·语言模型·自然语言处理
AC赳赳老秦23 分钟前
软件组件自动化的革命:DeepSeek 引领高效开发新时代
运维·人工智能·算法·云原生·maven·devops·deepseek
小亮✿1 小时前
并查集OJ做题报告
算法·个人知识总结·做题报告
ShineWinsu1 小时前
对于模拟实现C++list类的详细解析—上
开发语言·数据结构·c++·算法·面试·stl·list
程序员酥皮蛋1 小时前
hot 100 第二十九题 29.删除链表的倒数第 N 个结点
数据结构·算法·leetcode·链表
stripe-python1 小时前
十二重铲雪法(下)
c++·算法