直接插入排序
时间复杂度: O(N ^ 2) (最坏情况下 - 无序)
O(N) (最好情况下 - 有序)
稳定性:稳定
实现原理:
简单的说,就是把数组划分为两个部分,一部分已经有序(在最开始的时候,就把第一个元素,看成有序的那部分),一部分未排序;
每次从未排序的部分,取第一个元素,然后遍历有序部分,进行比较,找到位置以后,就将这个元素插进去。
具体做法就是,找到位置以后,不断把已经有序的元素后移,给待插入的元素让位。
移动完以后,再把元素放到那个为它空出来的数组位置。这样,一趟插入排序就完成了。
代码示例:
public static void insertSort(int[] array){
for(int i = 1;i < array.length;i++) {
int tmp = array[i];
int j = i - 1;
for(j = i - 1;j >= 0;j--){
if(array[j] > tmp) {
array[j + 1] = array[j];
}else {
break;
}
}
array[j + 1] = tmp;
}
}
来源:CSDN
作者:Anonyme(ღ˘⌣˘ღ)
链接:https://blog.csdn.net/qq_45605759/article/details/104079830