第 23 题:如何理解插入排序?
什么是插入排序?
就是在数组中从左到右,先取一个数出来,然后把它放到合适的位置
算法描述
假设一个数组中有 2 个区域
5, 8, 2, 3, 1
有序区为空,无序区为 5, 8, 2, 3, 1
-----------------------------------
首先在无序区中选第一个值(5),把它放在有序区的尾部,第一步基本上不用动
结果:5, 8, 2, 3, 1
有序区为 5,无序区为 8, 2, 3, 1
-----------------------------------
然后在无序区中取第一个值(8)记录下来,然后继续在无序区中查找比它更小的值(1),然后在有序区中从右往左寻找合适的位置(小于 1 和大于 1 的中间)插入
结果:5, 8, 2, 3, 1
有序区为 1, 5,无序区为 8, 2, 3
-----------------------------------
然后在无序区中取第一个值(8)记录下来,然后继续在无序区中查找比它更小的值(2),然后在有序区中从右往左寻找合适的位置(小于 2 和大于 2 的中间)插入
结果:5, 8, 2, 3, 1
有序区为 1, 2, 5,无序区为 8, 3
-----------------------------------
... 以此类推,直到无序区为空
参考资料
值得收藏的十大经典排序算法
附加
-
此文章通过自媒体多平台发布,发布后不再进行维护,如对内容有任何异议可以到下方的 GitHub 中进行讨论
-
【持续维护/更新 500+前端面试题/笔记】https://github.com/noxussj/Interview-Questions/issues
-
【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/
原文地址:https://www.cnblogs.com/noxussj/p/15040428.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Xargs Sh -c Skipping the First Argument
- Centos系统安装
- Python 为什么能支持任意的真值判断?
- Python 为什么要在 18 年前引入布尔类型?且与 C、C++ 和 Java 都不同?
- Python计算大文件行数方法及性能比较
- docker容器部署Prometheus服务——云平台监控利器
- ASP.NET Core 奇技淫巧之接口代理转发
- 基于CDH(Cloudera Distribution Hadoop)的大数据平台搭建
- troubleshoot之:用control+break解决线程死锁问题
- Docker 三剑客之docker-compose
- 腾讯云 Severless-Express 项目开发和灰度发布最佳实践
- 在Docker中使用Redis
- 基于实际业务场景下的Flume部署
- troubleshoot之:使用JFR解决内存泄露
- 一个ABAP和JavaScript这两种编程语言的横向比较