排序算法中还有一个重要的排序就是插入排序,话不多,范范老师带领各位同学直接了解下什么是插入排序!

插入排序的思想:初始化时,有序区域的只有一个元素,其余元素都是属于无序区域的,那么每次我们从无序区域依次抽取一个元素,用该元素和自己的有序区域的元素一一比较,如果有序区域的元素大于该无序区域的元素,则该有序区域的元素向后移动一位,让该无序区域的元素插入进来,此时该无序区域的元素插入后变为有序区域的元素;如果有序区域的元素小于该无序区域的元素,那么位置不变,此时该无序区域的元素也变为有序区域的元素。

具体举例说明:

如下图所示,我们创建一个无序的列表,如下图所示:

初始化默认列表的第0位的元素3属于有序区域(即红色区域代表是有序区域,白色区域代表是无序区域),此时我们从白色区域抽取无序区域位于列表第1位的元素4,此时将元素3和元素4进行比较发现3<4,此时元素3不发生位移,同时元素4加入有序区域,如下图所示:

此时我们接着从白色区域抽取无序区域位于列表的第2位元素5,此时元素5和元素4比较,发现4<5,此时元素4和元素3不发生位移,同时元素5加入有序区域,如下图所示:

此时我们接着从白色区域抽取无序区域位于列表的第3位元素1,此时元素1分别和元素5 元素4 元素3比较,发现元素1都比他们小,此时元素3/4/5都向右移动一位,将列表的第0位位置空出来,此时让元素1插入到该第0位位置上,此时元素1加入有序区域,如下图所示:

此时我们接着从白色区域抽取无序区域位于列表的第4位元素2,此时元素2分别和元素5 元素4 元素3 元素1比较,发现元素5/4/3比它大,而元素1比它小,此时元素3/4/5向右移动一位将列表的第1位空出来,而元素1的位置保持不变,此时元素2加入到有序区域,如下图所示:

最后我们接着从白色区域抽取无序区域位于列表的第5位元素7,此时元素7和元素5比较发现7>5,所以此时不发生位置位移,同时元素7加入到有序区域,至此插入排序结束,如下图所示:

接下来我们通过代码来实现插入排序:

代码运行结果如下:





©著作权归作者所有:来自51CTO博客作者jinzhenwells的原创作品,如需转载,请与作者联系,否则将追究法律责任

更多相关文章

  1. 排序算法——选择排序
  2. Microsoft Ignite 2021:Azure Resource Mover 新特性
  3. Python的数学运算:Python_Course
  4. 构造函数、dom元素的基础
  5. web前端技术分享之:Canvas框架之Konva.js --元素节点的事件
  6. Selenium3自动化测试【15】元素定位之Class、Name
  7. 【Redis】PHP操作Redis的命令大全
  8. 有关Python参数的思考
  9. 线性表之链式存储(二)

随机推荐

  1. [Android] 仿IOS实现自定义Dialog,底部弹
  2. android操作系统默认的图片
  3. 第十周智能手机开发学习笔记
  4. Android 对话框【Dialog】去除白色边框代
  5. android 用UDP做的心跳连接 小示例
  6. android 检测耳机是否插入
  7. TableLayout
  8. 手把手教你怎么去除Android(安卓)APP里面
  9. Android(安卓)大图压缩处理,避免OOM
  10. android全屏,去掉title栏的办法