活动地址: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
-
-
相关阅读:
AQS之基础分析 (一)
JavaScript判断字符串是否为数字类型:Number.isInteger、isNaN、正则表达式比较
Stable Diffusion 参数介绍及用法
用android如何实现计算机计算功能
Java程序员们synchronized相关面试题,你接得住吗
aop实现动态日志
python列表基本运算
Git 从了解到精通(1)常用命令
C++ STL库的介绍和使用
Win7缺失dll文件如何修复?Win7计算机丢失dll文件怎么办
-
原文地址:https://blog.csdn.net/m0_61469860/article/details/126109563