活动地址:CSDN21天学习挑战赛
作者简介:大家好我是小唐同学(๑><๑),大家可以叫我小唐
个人主页:小唐同学(๑><๑)的博客主页
系列专栏:数据结构
博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里
牛客网支持ACM模式哦,刷算法题也很推荐哦!!!
下面上文章------》
目录
直接插入排序:直接插入排序是一种最简单的排序方法,过程就是将每个待排元素逐个插入到已经排好的有序序列中。
输入:
n个数的序列,通常直接存放在数组中,可能是任何顺序。
输出:
输入序列的一个新排列,满足从小到大的顺序(默认讨论升序,简单的修改就可以实现降序排列)。
每次我们从原有数据中取出一个数,插入到之前已经拍好的序列中,直到所有数全部取完,那么新的有序排列也就完成了。
我们先给出实例数组:
1 5 9 2 6 8 12
当有序数列中无元素是 则首元素 1 则为有序列
1 5 9 2 6 8 12
则首个无序元素 5 进入有序列 与有序列进行比较
1 5 9 2 6 8 12
则首个无序元素 9 进入有序列 与有序列进行比较
1 5 9 2 6 8 12
则首个无序元素 2 进入有序列 与有序列进行比较
1 2 5 9 6 8 12
以此类推
则可得出有序列
1 2 5 6 8 9 12
- # include
- int main()
- {
- int n;
- scanf("%d",&n);
- int a[n];
- for (int i=0;i
- {
- scanf("%d",&a[i]);
- }
- int temp;
- for(int i=1;i
- {
- if(a[i]-1])
- {
- int j;
- temp=a[i];
- {
- a[j+1]=a[j];
- }
- a[j+1]=temp;
-
- }
-
- }
- for(int i=0;i
- {
- printf("%d",a[i]);
- }
-
- }
白话解析核心代码:
白话讲解直接插入排序核心算法:
i从1开始
当a[i]
后边的元素小于前边的元素
那就要提前
把该值进行暂时存储temp
进行for循环从后向前进行比较
只要比temp (a[i])大 则继续向前比较 把 j+1的位置进行向后填充(也就是比a[i]大的放后边)
当temp不小于a[j]时则跳出
把temp赋值给j+1
-
-
相关阅读:
yolov5+shufflenet轻量化目标检测
【实验】配置用户自动获取IPv6地址的案例
微服务集成seata完成分布式事务,解决数据不一致问题
蓝桥杯 题库 简单 每日十题 day10
计算机毕业设计Java超市进销存管理系统(源码+系统+mysql数据库+lw文档)
【C语言】可保存的动态通讯录的实现
【工具插件类教学】三种常用日期选择UI控件工具
python毕业设计作品基于django框架个人博客系统毕设成品(7)中期检查报告
输赢只是一时
内部类~锁~访问修饰符
-
原文地址:https://blog.csdn.net/m0_61469860/article/details/126167920