插入排序
插入排序 算法思想 插入排序是一个特别好理解的排序算法,这里举一个打牌的例子说明一个工作原理。在开始摸牌的时候,我们手里是没有扑克牌的,当摸第一个张牌的时候,我们先放在手里,当有第二张牌的时候,当它比我们手里的牌大,就放在右边,当比手里的牌小就放在左边,即升序排序(当然也可以降序);当第三张牌的时候,就选择合适的位置查进去,使得手里的牌是有序的。那么当整个扑克摸完的时候,我们手里的牌也是有序的。排序算法就是这个原理,手里的牌相当于已经排好序的数字,还没有摸的牌相当于待排序的数字。 插入排序算法的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法步骤: 从第一个元素开始,表示该元素是排好序的 取下一个元素cur,在排好序的序列上从后向前扫描,记录为temp 如果temp大于cur,将temp的位置向前移动一个位置 重复步骤3,直到找到temp小于或者等于cur 将新元素插入到当前位置 重复步骤2~5 下面通过一个动画看一下插入排序的排序过程 通过上述的过程,直接插入排序是一种稳定的排序算法,时间复杂度为 O ( n 2 ) O(n^2) O ( n 2 ) ,即外层需要遍历每一个元素作为未排序的数字,内层需要遍历需要插入的位置,每个循环的最坏次数为 n n n 次;每次交换都需要定义一个临时变量作为数据交换,额外的空间复杂度为 O (