数据结构:直接插入排序

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

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

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

创建一个end变量让其指向数组中下标为0的元素,也就是第一个元素,再让tmp被赋值为指end+1下标的元素,也就是第二个元素,然后进入while循环,如果tmp < arrend,就让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)
相关推荐
晓蛋1 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
phltxy1 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
m0_547486661 天前
《数据结构教程》全套 PPT课件2026
数据结构
phltxy1 天前
C 语言中的数据存储:从类型到二进制位
c语言
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控