一、基本思想(直接插入排序)
1.把整个区间分为“有序”和“无序”。
2.每次选择无序区间内的第一个元素插入到有序区间的合适位置。
二、性能分析
选择排序是一种稳定性较好的算法。
空间复杂度为O(1)。
数据有序时,时间复杂度最好,O(N);
数据逆序时,时间复杂度最坏,O(N^2);
平均时间复杂度为O(N^2)。
插入排序的初始数据越接近有序,时间效率越高。
三、代码实现
//插入排序,升序为例
public static void insertSort(int[] array) {
//bound变量来把整个数组分成两个区间
//[0, bound) 已排序区间
//[bound, size) 待排序区间
for (int bound = 1; bound < array.length; bound++) {
//bound 下标对应的元素就是待插入元素
//把这个元素放到前面的有序顺序表中的合适位置
int tmp = array[bound];
int cur = bound - 1;
for (cur = bound - 1; cur >= 0; cur--) {
if (array[cur] > tmp) {
array[cur + 1] = array[cur];
} else {
break;
}
}
array[cur + 1] = tmp;
}
}
来源:CSDN
作者:甜鱼_
链接:https://blog.csdn.net/weixin_44945496/article/details/103235286