美文网首页
内存排序(三)——插入排序

内存排序(三)——插入排序

作者: 旺叔叔 | 来源:发表于2019-03-22 17:36 被阅读0次

核心过程

将原数组里的数,按有序和无序分为两部分,将无序部分的数逐个插入有序部分中。
重点:插入过程中,保持新数组是有序的。
所以核心过程是:将一个数插入一个有序数组,并保持数组有序。

public static void insertionSortCore(int[] list, int begin, int end, int value){
    int index = end;

    for (; index >= begin && list[index] > value; index--) {
        list[index + 1] = list[index];
    }

    list[index + 1] = value;
}

迭代过程

public static void insertionSortIteration(int[] list){
    for (int i = 1; i < list.length; i++){
        insertionSortCore(list, 0, i - 1, list[i]);
    }
}

合并两过程的写法

public static void insertionSort(int[] list){
    int rightBegin, rightEnd;

    for (rightBegin = 1; rightBegin < list.length; rightBegin++){
        int value = list[rightBegin];

        for (rightEnd = rightBegin - 1; rightEnd >= 0 && list[rightEnd] > value; rightEnd--) {
            list[rightEnd + 1] = list[rightEnd];
        }

        list[rightEnd + 1] = value;
    }
}

PS:直接插入还有二分优化和希尔排序两种优化方式。待续。

相关文章

  • 排序算法

    内排序(全部记录放在内存中)有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。(2)...

  • 内存排序(三)——插入排序

    核心过程 迭代过程 合并两过程的写法 PS:直接插入还有二分优化和希尔排序两种优化方式。待续。

  • 常见排序算法总结

    排序算法一般分为: 内部排序(In-place sort)不占用额外内存或者占用常数内存,如:插入排序、选择排序、...

  • 7大排序算法

    一、排序算法分类 1.外排序:需要在内外存之间多次交换数据 2. 内排序:只在内存中进行 插入排序类直接插入排序希...

  • IOS 常用算法

    一:排序算法 排序方式有插入排序,选择排序和交换排序三种。插入排序有直接插入排序和希尔排序。选择排序有简单选择排序...

  • 插入排序

    内部排序:排序期间元素全部存放在内存中外部排序:排序期间元素无法全部同时放在内存中 插入排序 基本思想:每次将一个...

  • 基础排序

    一、选择排序 二、冒泡排序 三、插入排序

  • 数据结构与算法(二)

    排序算法 1.内部排序:数据记录在内存中进行排序 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归...

  • iOS排序算法

    (插入排序、选择排序、交换排序、归并排序、基数排序) 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序...

  • 电废人生之 C基础系列20210114

    摸鱼之 在下列几种排序方法中,要求内存量最大的是______。 A快速排序 B插入排序 C选择排序 D归并排序 快...

网友评论

      本文标题:内存排序(三)——插入排序

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