当前位置: 首页 > news >正文

插入排序讲解

插入排序(Insertion-Sort)一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动,从而实行排序的目的。

插入排序图示:

 来看看插入排序的模板题:

因为前面讲过插入排序的思想,所以具体的看代码:

void insertion_sort(int a[],int n){for(int i = 2; i <= n; i++){int j = i-1;//不能用i,因为后面要j--的int key = a[i];//定义key等于当前要比的数while(j >= 1 && a[j] > key){a[j+1] = a[j];j--;}//然后循环,j >= 1是保证不越界,a[j] > key是当a[j]大于key的时候才循环,如果a[j]小于key了,就把key插在这里了a[j+1] = key;//插入key}
}

CODE:

#include <bits/stdc++.h>
using namespace std;
int a[1001];
void insertion_sort(int a[], int n){for(int i = 2; i <= n; i++){int key = a[i];int j = i-1;while(j >= 1 && a[j] > key){a[j+1] = a[j];j--;}a[j+1] = key;}
}
int main(){int n;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];insertion_sort(a,n);for(int i = 1; i <= n; i++) cout << a[i]<<" ";return 0;
}

http://www.lryc.cn/news/107670.html

相关文章:

  • 杀疯了的ChatGPT——开启AI智能交流新纪元 「文末有彩蛋」
  • web爬虫第五弹 - JS逆向入门(猿人学第一题)
  • P5731 【深基5.习6】蛇形方阵
  • Python实现GA遗传算法优化循环神经网络回归模型(LSTM回归算法)项目实战
  • ESD防静电监控系统在SMT产线中的应用案例
  • Vue+Nodejs+Express+Minio 实现本地图片上传
  • em3288 linux_4.19 第一次烧写无法进入内核的情况
  • 【Java多线程学习5】什么是悲观锁,什么是乐观锁?如何实现乐观锁、乐观锁存在哪些问题
  • OSPF协议RIP协议+OSPF实验(eNSP)
  • leetcode每日一练-第108题-将有序数组转换为二叉搜索树
  • 王道《操作系统》学习(二)—— 进程管理(二)
  • Vulnhub: shenron: 3靶机
  • Kubernetes高可用集群二进制部署(二)ETCD集群部署
  • mysql主从复制及原理
  • MQTT服务器详细介绍:连接物联网的通信枢纽
  • 通过VBA宏合并Excel工作表
  • Mac 定时重启 TouchBar 脚本(缓解闪烁问题)
  • Redis主从复制、哨兵机制、集群分片
  • 字段填充策略 FieldFill
  • Docker run 启动容器报错
  • Golang之路---03 面向对象——类型断言
  • Atcoder 做题记录
  • C++之观察者模式(发布-订阅)
  • 无头单链表,有完整测试程序
  • 2023年第四届“华数杯”数学建模思路 - 案例:FPTree-频繁模式树算法
  • MySQL做分布式锁
  • Python学习笔记:变量类型、字符串基本操作
  • JVM的组件、自动垃圾回收的工作原理、分代垃圾回收过程、可用的垃圾回收器类型
  • 【elementui】解决el-select组件失去焦点blur事件每次获取的是上一次选中值的问题
  • 通过了PMP考试,还有什么证书值得考?