插入排序算法是常见的排序算法之一。其原理是从左往右遍历,每次对所取到的值(元素)把它插入到合适的位置,使得从开始到目前取到的值是一个已经排好序的状态。所以当我们取到最后一个值时,前面所有的都已经是排好序的数组了。
下面给出两种插入排序的实现。第一种是常规插入排序,最坏时间复杂度为O(n^2).
因为对于当前的值(也就是代码中的 key)来讲,其前面的值已经排好序,如果逐一比较,很明显是很费时的。这里第二种实现用了二分查找的思想,虽然不能提高总体速度(因为我们需要移动数组元素的总次数不会减少),但是相对于第一种来讲,查找位置的速度会提高很多。