程序员必须掌握的排序算法:插入排序的原理与实现

📋 前言

插入排序八大排序之一是一种非常简单直观的排序算法,尽管插入排序在时间复杂度上并不是最优的选择,但它的思想简单直观,易于实现。而且根据插入排序我们还可以推演出希尔排序这种效率更高的排序。

  • 今天就来带大家看一下选择排序的实现和完部代码吧

@TOC

一、插入排序的思想

直接插入排序是一种简单的插入排序法,其基本思想是:

把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列

而我们从小被人熟知的扑克牌的摸牌的过程就非常像插入排序

二、插入排序的具体实现

插入排序对的思想就是每次把后面的一个值和前面的有序序列进行对比:

  • 如果比他大就把比他大的数往后移动
  • 直到遇到比我们要比较的值小的时候就停下来然后插入

2.1 实现思路

所以实现思路也就很简单了 首先 需要一个end来表示有序队列的队尾:

  • 🔥 ==然后再 定义一个 tmp 用于和前面的有序序列进行比较==
  • 🔥 ==而每一次插入一个数都需要遍历一遍比较所以还需要一个==
  • 🔥 ==while循环来遍历,找到了位置之后就把 tmp 插入进去==

2.2 实现代码

🍸 代码演示:

c 复制代码
void insertsort(int* str,int n)
{
	
	for (size_t i=0; i<n-1; i++)
	{
		int end = i;
		int tmp = str[end + 1];
		while (end >= 0)
		{
			if (str[end] > tmp)
			{
				str[end + 1] = str[end];
			}
			else
			{
				break;
			}
			end--;
		}

		str[end+1] = tmp;
	}
	
}

三、插入排序的时间复杂度

由于插入排序每次,都要遍历一下再找打插入的位置所以插入排序的时间复杂度是

  • 时间复杂度:O(N*N)
  • 空间复杂度:O(1) 它并没有开辟额外空间

总结来说插入排序是一个非常稳定的算法,元素集合越接近有序,直接插入排序算法的时间效率越高。

📝文章结语:

:cloud: 把本章的内容全部掌握,铁汁们就可以熟练应用switch语句啦! 看到这里了还不给博主扣个: ⛳️ 点赞🍹收藏 :star: 关注 💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖 拜托拜托这个真的很重要! 你们的点赞就是博主更新最大的动力! 有问题可以评论或者私信呢秒回哦。

相关推荐
zengy540 分钟前
Effective C++中文版学习记录(三)
数据结构·c++·学习·stl
&梧桐树夏4 小时前
【算法系列-链表】删除链表的倒数第N个结点
数据结构·算法·链表
QuantumStack4 小时前
【C++ 真题】B2037 奇偶数判断
数据结构·c++·算法
wclass-zhengge5 小时前
数据结构篇(绪论)
java·数据结构·算法
Dylanioucn5 小时前
【分布式微服务云原生】探索Redis:数据结构的艺术与科学
数据结构·redis·分布式·缓存·中间件
何事驚慌5 小时前
2024/10/5 数据结构打卡
java·数据结构·算法
结衣结衣.5 小时前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
大三觉醒push亡羊补牢女娲补天版5 小时前
数据结构之排序(5)
数据结构
TJKFYY5 小时前
Java.数据结构.HashSet
java·开发语言·数据结构
卡皮巴拉吖5 小时前
【堆排】为何使用向下调整法建堆比向上调整法建堆更好呢?
数据结构