直接插入排序

二次信任 提交于 2020-01-24 19:43:29

直接插入排序

时间复杂度: 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;
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!