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

算法:插入排序

一、思路

插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。

  • 如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数。
  • 如果输入数组是逆序排列的,插入排序出现最坏情况。平均情况与最坏情况一样,其时间代价是(n²)。

插入排序非常类似于整扑克牌:在开始摸牌时,左手是空的,牌面朝下放在桌上。接着, 一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。 为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。
在这里插入图片描述

二、代码

public class InsertSortTest {public static void main(String[] args) {int[] array = {8, 3, 1, 9, 7, 6, 5, 2, 4};System.out.println(Arrays.toString(insertSort(array)));}public static int[] insertSort(int[] array) {for (int i = 1; i < array.length; i++) {//插入的数int insertVal = array[i];//被插入的位置(准备和前一个数比较)int index = i - 1;//如果插入的数比被插入的数小while (index >= 0 && insertVal < array[index]) {//将把 arr[index] 向后移动array[index + 1] = array[index];//让 index 向前移动index--;}//把插入的数放入合适位置array[index + 1] = insertVal;System.out.println("第" + i + "大轮排序的结果为:" + Arrays.toString(array));}return array;}}

输出:

1大轮排序的结果为:[3, 8, 1, 9, 7, 6, 5, 2, 4]2大轮排序的结果为:[1, 3, 8, 9, 7, 6, 5, 2, 4]3大轮排序的结果为:[1, 3, 8, 9, 7, 6, 5, 2, 4]4大轮排序的结果为:[1, 3, 7, 8, 9, 6, 5, 2, 4]5大轮排序的结果为:[1, 3, 6, 7, 8, 9, 5, 2, 4]6大轮排序的结果为:[1, 3, 5, 6, 7, 8, 9, 2, 4]7大轮排序的结果为:[1, 2, 3, 5, 6, 7, 8, 9, 4]8大轮排序的结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9]

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 杀毒软件火绒下载地址
  • 数学建模强化宝典(13)M-K检验法
  • 【系统架构设计师】状态模式
  • matlab实现kaiser窗+时域采样序列(不管原信号拉伸成什么样子)是一样的,变到频谱后再采样就是一样的频域序列。
  • CCPC网络预选赛感想
  • 深入了解以太坊
  • COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection
  • EmguCV学习笔记 VB.Net 11.2 DNN推理流程
  • iPhone的安全模式如何操作
  • 嵌入式OpenHarmony源码基本原理详解
  • 内网安全-横向移动【3】
  • 检查Index对象是否单调递减pandas.Index.is_monotonic_decreasing
  • 【学习笔记】3GPP WG SA5 Rel-19标准化工作管理和编排
  • 衡石分析平台使用手册-单机安装及启动
  • vue3实现打飞机(雷电)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • CSS实用技巧干货
  • Lsb图片隐写
  • Otto开发初探——微服务依赖管理新利器
  • PV统计优化设计
  • python学习笔记-类对象的信息
  • Spring Cloud中负载均衡器概览
  • vue脚手架vue-cli
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 开源地图数据可视化库——mapnik
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端_面试
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 算法---两个栈实现一个队列
  • 系统认识JavaScript正则表达式
  • 小试R空间处理新库sf
  • 写代码的正确姿势
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 与 ConTeXt MkIV 官方文档的接驳
  • 正则与JS中的正则
  • 智能合约开发环境搭建及Hello World合约
  • 智能网联汽车信息安全
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (7) cmake 编译C++程序(二)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (阿里云万网)-域名注册购买实名流程
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)计算机毕业设计高校学生选课系统
  • (三)mysql_MYSQL(三)
  • (算法设计与分析)第一章算法概述-习题
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • .htaccess配置重写url引擎
  • .NET C# 配置 Options
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net IE10 _doPostBack 未定义
  • .net mvc 获取url中controller和action