插入排序的原理是默认前面的元素都是已经排序好的,然后从后面逐个读取插入到前面排序好的合适的位置,就相当于打扑克的时候每获取一张牌的时候就插入到合适的位置一样。插入排序可以分为两种,一种是直接插入还一种是二分法插入,直接插入的原理比较简单,就是往前逐个查找直到找到合适的位置然后插入,二分法插入是先折半查找,找到合适的位置然后再插入。说到二分法查找,等排序完之后就会介绍查找,有多种包括斐波那契查找,哈希查找,二分法查找等多个,其实这里面也可以使用,我们先看一下简单的直接插入排序代码
可能还不是很严谨,如果array为空的怎么办,那么在修改一下
代码原理其实都差不多,只是下面的稍微有点修改,在改变一下,换成while循环的方式
无论怎么变其实原理还是一样的,只是代码的书写方式可能有点区别,我们来看另外一种插入排序方法,二分法插入排序
如果数据很大的情况下,二分法插入排序明显比直接插入效率要高。我们再看一下如果使用递归怎么写,看下面代码
OK,上面就是所谓的插入算法。