美文网首页
排序之插入排序

排序之插入排序

作者: Crazy_Snail | 来源:发表于2018-08-25 23:06 被阅读0次

    算法

    最简单的排序算法之一是插入排序。插入排序由N-1趟排序组成。对于p=1到N-1趟,插入排序保证从位置0到位置p上的元素为排序状态。插入排序利用了这样的事实:已知位置0到位置p-1上的元素已经处于排过序的状态。

    原始数组 56 23 5 21 65 移动的位置
    p=1趟后 23 56 5 21 65 1
    p=2趟后 5 23 56 21 65 2
    p=3趟后 5 21 23 56 65 2
    p=4趟后 5 21 23 56 65 0

    Java代码实现
    int[] insertionSort(int[] nums) {
        int i;
        for (int p = 1; p < nums.length; p++) {
            int temp = nums[p];
            for (i = p; i > 0 && temp < nums[i - 1]; i--) {
                nums[i] = nums[i - 1];
            }
            nums[i] = temp;
        }
        return nums;
    }
    

    分析

    由于嵌套循环的每一个花费N次迭代,因此插入排序为O(N2),而且这个界是精确的,因为以反序的输入可以达到该界限。
    Σi = 2 + 3 + 4 +…+ N=O(N2)

    相关文章

      网友评论

          本文标题:排序之插入排序

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