插入排序
插入排序
1. 解决的问题
在已经排好序的序列中,插入一个新元素,让序列依旧保持有序,如优先级队列
2. 核心知识
- 0个或者1个元素,已经是排好序的
- 交换位置的条件(升序):
- 当前元素比后者大(sequeue[i] > sequeue[i+1])
- 当前元素比前者小(sequeue[i] < sequeue[i-1])
- 2层循环
- 第1层:准备要插入的元素,从索引1开始
- 第2层:将当前要插入的元素,前后交换位置直到让整个序列保持有序的位置
3. C++代码实现
#include <iostream>
using namespace std;
// 定义数组的长度
const int array_len = 7;
template<class T>
void insertSort(T(& nums)[array_len], int n) {
// 索引为0的元素,只有1个,默认就是排好序的,从第二个元素开始,依次添加到有序列表中
for (int i = 1; i < array_len; i++) {
// i 表示当前要插入的值
for (int j=i; j > 0; j--) {
// 若当前值比后者小,则交换位置,若发现当前值比之前值大,则停止交换,已经到和合适的位置
if (nums[j] < nums[j-1]) {
T temp = nums[j];
nums[j] = nums[j-1];
nums[j-1] = temp;
} else {
break;
}
}
}
}
int main() {
// 定义数组的长度
int nums[array_len] = {2, 3, 4, 5, 999, 33, 42};
insertSort(nums, sizeof nums / sizeof nums[0]);
// 输出排序后的数组
for (int& num: nums) {
cout << num << endl;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2017-03-20 0_建网站步骤
2017-03-20 _3_form_标签
2017-03-20 _3_body_标签
2017-03-20 _2_head_中标签
2017-03-20 _1_html_框架
2017-03-20 _0_web_基础
2017-03-20 _0_工具