插入排序

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤

  1. 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

  2. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)。

来源:https://github.com/hustcc/JS-Sorting-Algorithm

算法演示

排序动画过程解释

  1. 一开始左端数字已经排序,数字 5 不动

  2. 然后,取出剩余未操作的左端数字 3

  3. 将其与已经操作的左侧数字相比较

  4. 如果左边的数字较大,则交换两个数字

  5. 这种情况下,由于 5 大于 3 ,所以交换两个数字

  6. 重复此操作,直到出现一个较小的数字或者数字到达左端

  7. 数字 3 已经完成排序

  8. 接下来,和之前一样取出剩余未操作的左端数字 4  

  9. 与其相邻的左边数字进行比较

  10. 这种情况下,由于 5 大于 4 ,所以交换两个数字

  11. 继续操作,由于 3 小于 4 ,即出现了更小的数字,所以 4 停止移动

  12. 数字 已经完成排序

  13. 重复相同的操作,直到所有的数字完成排序

代码实现

为了更好的让读者用自己熟悉的编程语言来理解动画,笔者将贴出多种编程语言的参考代码,代码全部来源于网上。

C++代码实现

Java代码实现

Python代码实现

JavaScript代码实现

如果你是iOS开发者,可以在GitHub上 https://github.com/MisterBooo/Play-With-Sort-OC 获取更直观可调试运行的源码。


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 时间序列&日期学习笔记大全(上)
  2. C语言的一些练习以及写一个猜数字游戏
  3. 不会时间序列预测?不要紧,大神来教你
  4. php用逗号格式化数字的方法(代码示例)
  5. PHP重置数组为连续数字索引的三种方式
  6. 详解之php反序列化
  7. 直击PHP序列化和反序列化原理
  8. php之json与xml序列化/反序列化
  9. 详解PHP的session反序列化漏洞问题

随机推荐

  1. 【PHP】当mysql遇上PHP
  2. phpMyAdmin 尝试连接到 MySQL 服务器,但服
  3. mysql 5.7.14 免安装配置方法教程
  4. mysql表导出导入测试(utf8-utf8)
  5. 理解Mysql binlog 日志的三种模
  6. mysql 安装以及卸载 CentOS 7
  7. win下mysql物理备份恢复 适用与mysql 恢
  8. Mysql数据库的打开和关闭
  9. MySql数据库——文件
  10. 如何将MySQL DateTime(不是TIMESTAMP)的默