插入排序
简单理解为把无序的序列插入到有序序列中
第一步:是把无序数组划分成一个有序序列和一个无序序列
第二步:依次把无序序列中的数插入有序序列,1比6和8小,把1存起来,8右移,6右移,1插入。
总结一下:无序序列的数与有序序列的数依次比较,插入合适的位置。
具体代码如下:
插排适用的情况:
1.序列基本有序
2.元素数量较少时
时间复杂度:O(n^2)
空间复杂度:O(1)
希尔排序
希尔排序是插入排序的改进版。
简单理解为分组的插入排序
第一步:先引入gap变量,gap的意思就是增长量,将间隔gap的元素分为一组进行插排。
通常gap =gap / 3 + 1;使用循环,只要gap大于1就会一直循环排序,每一趟排序会减少gap
不同颜色表示不同分组。每组分别进行插入排序。
第一趟:
第二趟:gap变为2
第三趟:
下面是代码实现:
时间复杂度:O(n)
空间复杂度:O(1)