直接插入排序:
什么是直接插入排序?直接插入排序就是从第二个数字开始排序,跟它之前的数依次比较,然后放到合适的位置,然后依次对后面的数进行排序。就像我们玩牌一样,揭到第一张牌是有序的,第二张跟第一张相比较,比它小的放前面,比它大的放后面,再来第三张,跟前两张比较,放到顺序合适的位置…
图解:
从上面图片中我们可以看出,插入数据时,从后往前比较,如果该数比相比较的数(放在temp中)大,就将该数向后挪。
代码实现:
public void insertSort(int[] array){
int temp = 0;
int j = 0;
for (int i = 1; i < array.length ; i++) {
temp = array[i];
for ( j = i-1; j >= 0 ; j--) {
if(array[j] > temp){
array[j + 1] = array[j];
}else{
break;
}
}
array[j + 1] = temp;
}
}
直接插入排序特点:
- 越接近有序插入速度越快
- 稳定性:稳定
- 时间复杂度(O(n^2))
- 空间复杂度:(O(1))