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

排序之插入排序

作者: 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)

相关文章

  • 排序算法之插入排序和希尔排序(shell sort)

    插入排序(inserction sort)和希尔排序(shell sort) 相关文章 排序算法之快速排序

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • c算法O(n)^2(一)

    选择排序 插入排序 优化插入排序算法

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • 算法(排序)

    一、内部排序 1、插入排序—直接插入排序(Straight Insertion Sort) 2、插入排序—希尔排序...

  • Java排序算法

    插入排序 直接插入排序 折半插入排序 交换排序 冒泡排序 快速排序 选择排序 简单选择排序 堆排序 其他排序 二路...

  • 一遍文章搞定插入排序-java版

    插入排序 1.1 插入排序的基本介绍 插入排序属于内排,就是以插入的方式来达到排序的目的 1.2 插入排序思想 将...

  • 算法之插入排序

    算法之插入排序 一:基本概念插入排序(Insert Sort),每次将一个待排序的数据元素,插入到前面已经排好序的...

  • 排序(新排版)

    冒泡排序 插入排序 二分插入排序 希尔排序 选择排序 快速排序

  • iOS算法

    排序方法 选择排序:直接选择排序、堆排序。 交换排序:冒泡排序、快速排序。 插入排序:直接插入排序、二分法插入排序...

网友评论

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

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