美文网首页
直接插入排序

直接插入排序

作者: 亼珏 | 来源:发表于2020-09-09 09:34 被阅读0次

    基本思想

          直接插入排序是将一个记录插入到已经排好序的有序表中,从而得到一个新的记录数增1的有序表。

    直接插入排序算法

        void insertSort(int[] array) {
            int length = array.length;
            int j = 0;
            for (int i = 1; i < length; i++) {
                if (array[i - 1] > array[i]) {
                    int tmp = array[i];
                    j = i - 1;
                    for (j = i - 1; j >= 0 && array[j] > tmp; j--) {
                        array[j + 1] = array[j];
                    }
                    array[j + 1] = tmp;
                }
            }
        }
    

    直接插入排序算法的时间复杂度

          最好情况下,排序表本身就是有序的,比较记录是n-1次,没有移动记录,时间复杂度O(n)。
          最坏情况下,排序表本事是逆序的,比较记录是2+3+······+n次,也就是(n+2)(n-1)/2次,记录的移动次数也达到最大值3+4+······+(n+1)次,也就是(n+4)(n-1)/2次。
          若排序记录是随机的,根据概率相同原则,平均比较和移动次数约为(n2)/4,所以直接插入排序的时间复杂度为O(n2)。

    相关文章

      网友评论

          本文标题:直接插入排序

          本文链接:https://www.haomeiwen.com/subject/dandektx.html