美文网首页
直接插入排序

直接插入排序

作者: CircleLee | 来源:发表于2019-01-09 09:58 被阅读20次

直接插入排序(Straight Insertion Sort) 的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1 的有序表。
这个有点像我们平时玩扑克牌整理牌的过程。随机抽取8张扑克牌,需要按照从小到大的序列排列,我们一般会从第二张牌开始不断的与之前的牌进行比较,直接将扑克牌插入到合适的位置。


图1 直接插入排序

如图1 所示,
第一轮排序:4, 6 均与比之前的数字大,位置变。当i指正遍历到0的位置,与之前的数字进行比较,0数字最小直接插入到第一位,1,4,6后移一位。
第二轮排序:当i遍历到3的位置。3比4,6小,比0,1大。插入到1的后一位,4,6后移。后续步骤以此类推。

代码实现
//直接插入排序
public static int[] insertSort(int[] a) {
    int i, j;
    //第一位不需要排序,从i=1开始
    for (i=1; i<a.length; i++) {
        int temp = a[i];
        for (j=i-1; j>=0 && temp<a[j]; j--) {
            a[j+1] = a[j];     //记录后移
        }
        a[j+1] = temp;    //插入到正确位置
    }
    return a;
}

public static void main(String[] args) {
    int[] a = {1, 4 , 6, 0, 3, 2, 5, 9};
    int[] b = insertSort(a);
    System.out.print("Select sort:\n");
    for(int i=0; i<a.length; i++) {
        System.out.print(b[i] + ", ");
    }
}
运行结果:

Select sort:
1, 4, 6, 6, 6, 6, 6, 9,

时间复杂度 O(n^2)

相关文章

  • 插入排序

    一、直接插入排序 二、折半插入排序

  • 【数据结构】【C#】013-插入类排序:🥇直接插入排序(稳定)

    插入排序:直接插入排序(稳定) 【 算法思想 】 直接插入排序是一种最基本的插入排序方法,其基本操作是将第 i 个...

  • 排序——插入排序

    业精于勤荒于嬉 插入排序包括:直接插入排序、折半插入排序、希尔排序(缩小增量排序) 一、直接插入排序 1. 算法思...

  • 常用算法

    插入排序 包括直接插入排序和希尔插入排序 直接插入排序 将一个记录插入到已经排序好的有序表中。 sorted数组的...

  • 算法(排序)

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

  • 直接插入排序

    //直接插入排序

  • iOS算法

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

  • 几种实用的简易的排序算法

    也是面试题 一、插入排序 1.插入排序—直接插入排序(Straight Insertion Sort) 思路 遍历...

  • 2.1-插入排序-直接插入

    参考链接 插入排序:直接插入排序(Straight Insertion Sort) 白话经典算法系列之二 直接插入...

  • 经典排序算法-希尔排序Shell sort

    一、希尔排序思想 希尔排序是基于插入排序的快速的排序算法,先分组后对每组进行直接插入排序,再分组再直接执行插入排序...

网友评论

      本文标题:直接插入排序

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