活动地址: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
-
-
相关阅读:
【深度长文】学好并发编程不一定需要了解的MESI和内存屏障
Jenkins+gitlab与应用服务器直接做免密
Golang源码分析之golang/sync之singleflight
redis漏洞修复:(CNVD-2019-21763)
整数转罗马数字-----题解报告
DBCO-mannose 二苯并环辛炔-甘露糖,DBCO-PEG-mannose 二苯并环辛炔-聚乙二醇-甘露糖
Electron + vue搭建项目
stack类别
python爬虫动态爬取需点击事件或下一步才可获取的内容
基于STM32的蓝牙低功耗(BLE)通信方案设计与实现
-
原文地址:https://blog.csdn.net/m0_61469860/article/details/126109563