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

排序算法-插入排序法(InsertSort)

 排序算法-插入排序法(InsertSort)

1、说明

插入排序法是将数组中的元素逐一与已排序好的数据进行比较,先将前两个元素排序好,再将第三个元素插入适当的位置,也就是说这三个元素仍然是已排序好的,接着将第四个元素加入,重复此步骤,直到排序完成为止。可以看作是在一串有序的记录R1,R2,...,Ri中插入新纪录R,使得i+1个记录排序妥当。

2、算法分析

  1. 最坏情况和平均情况均需比较:(n-1)+(n-2)+(n-3)+...+3+2+1=\frac{n(n-1)}{2}次,时间复杂度为O(n^{2})。最好情况时间复杂度为O(n)
  2. 插入排序是稳定排序法。
  3. 因为只需一个额外的空间,所以空间复杂度为最佳。
  4. 这种排序法适用于大部分数据已经过排序的情况,也适用于往已排序数据库中添加新数据后再进行排序的情况。
  5. 由于插入排序法会造成数据的大量搬移,因此建议在链表上使用。

3、C++代码 

#include<iostream>
using namespace std;int main() {int data[6] = { 9,7,5,3,4,6 };cout << "原始数据:" << endl;for (int i = 0; i < 6; i++) {cout << data[i] << "  ";}cout << endl;int i;int j;//第1次://7  9  5  3  4  6//第2次://5  7  9  3  4  6//第3次://3  5  7  9  4  6//第4次://3  4  5  7  9  6//第5次://3  4  5  6  7  9for (i = 1; i < 6; i++) {int temp = data[i];j = i - 1;//temp > data[j]	从大到小排序的条件//temp < data[j]	从小到大排序的条件while (j >= 0 && temp < data[j]) {data[j + 1] = data[j];j--;}data[j + 1] = temp;}cout << "最终数据:" << endl;for (int i = 0; i < 6; i++) {cout << data[i] << "  ";}cout << endl;return 0;
}

输出结果 

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

相关文章:

  • RuntimeError: “slow_conv2d_cpu“ not implemented for ‘Half‘
  • 前端 | 前端工程化
  • 学信息系统项目管理师第4版系列24_整合管理
  • 轻量级虚拟化技术草稿
  • bootz启动 Linux内核过程中涉及的 do_bootm_states 函数
  • springcloud学习笔记(3)-服务管理组件Nacos
  • Insight h2database 更新、读写锁以及事务原理
  • skywalking动态配置[集成nacos/apollo/consul]
  • UniApp创建项目HelloWorld
  • Qt/C++原创推流工具/支持多种流媒体服务/ZLMediaKit/srs/mediamtx等
  • 学习黑马程序员JavaScript总结
  • 浅谈高速公路服务区分布式光伏并网发电
  • MATLAB算法实战应用案例精讲-【图像处理】机器视觉(番外篇)
  • 塑胶材料检测对激光焊机的作用
  • 将Eureka服务注册到Eureka中心
  • 将网站域名访问从http升级到https(腾讯云/阿里云)
  • QT通过TCP协议发送结构体数据
  • C++标准库之numeric
  • 第六章:最新版零基础学习 PYTHON 教程—Python 正则表达式(第二节 - Python 中的正则表达式与示例套装)
  • 【Python】WebUI自动化—Selenium的下载和安装、基本用法、项目实战(16)
  • c++视觉处理---图像重映射
  • 基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)
  • Insight h2database 执行计划评估以及 Selectivity
  • [天翼杯 2021]esay_eval - RCE(disabled_function绕过||AS_Redis绕过)+反序列化(大小写wakeup绕过)
  • 基于SSM+Vue的在线作业管理系统的设计与实现
  • Webapck 解决:[webpack-cli] Error: Cannot find module ‘vue-loader/lib/plugin‘ 的问题
  • 使用UiPath和AA构建的解决方案 5. 使用UiPath ReFramework处理采购订单
  • SQL基本语法用例大全
  • MAX17058_MAX17059 STM32 iic 驱动设计
  • 大数据笔记-大数据处理流程