美文网首页Java 杂谈
五、Java版直接插入排序

五、Java版直接插入排序

作者: 编程界的小学生 | 来源:发表于2018-09-28 11:05 被阅读17次

一、核心思想

抽出一个元素,在其前面的元素中找到适当的位置进行插入。
插入排序法:所谓插入排序法乃是将一个数目插入该占据的位置。

假设我们输入的是 “53,27,36,15,69, 42” 我们从第二个数字开始,这个数字是27,我们的任务只要看看27有没有正确的位置,我们的做法是和这个数字左边的数字来比,因此我们比较27和53,27比53小,所以我们就交换27和53,原来的排列就变成了“27, 53, 36, 15, 69, 42 ”

接下来,我们看第3个数字有没有在正确的位置。这个数字是36,它的左边数字是53,36比53小,所以我们将36和53交换,排列变成了 “27,36, 53, 15, 69, 42 "我们必须继续看36有没有在正确的位置,36的左边是27,27比36小,36就维持不动了,这时候排序还是“27, 36, 53, 15, 69, 42 "。

再来看第四个数字,这个数字是15,我们将15和它左边的数字相比,都比15大,所以就将15一路往左移动,这时候排序变成了 “15, 27, 36, 53, 69, 42 ”。

再来看第五个数字,这个数字是69,我们将69和它左边的数字相比,都比69小,所以就69维持不动了,这时候排序变成了 “15, 27, 36, 53, 69, 42 ”

最后,我们检查第六个数字,这个数字是42,42必须往左移,一直移到42的左边是36为止,所以我们的排列就变成了 “15, 27, 36, 42 ,53, 69”排序因此完成了。

image.png

二、源码

package com.ctw;

/**
 * @author TongWei.Chen 2018-09-26 14:16:52
 * @Description:
 * @Project sjjg-sf
 */
public class InsertSort {

    public static void insertSort(long[] array) {
        int i, j;
        // 要插入的数据
        long insertNode;
        // 从数组的第二个元素开始循环将数组中的元素插入
        for (i = 1; i < array.length; i ++) {
            // 设置数组中的第二个元素为第一次循环要插入的数据
            insertNode = array[i];
            j = i - 1;
            // 若要插入的元素小于第j个元素,则将第j个元素向后移动
            while ((j >= 0) && insertNode < array[j]) {
                array[j + 1] = array[j];
                j --;
            }
            // 直到要插入的元素不小于第j个元素,将insertNode插入到数组中
            array[j + 1] = insertNode;
        }
    }

    public static void main(String[] args) {
        MyArray array = new MyArray();
        array.add(111L);
        array.add(13L);
        array.add(31L);
        array.add(211L);
        array.add(11L);
        array.add(12L);
        array.add(23L);
        array.add(31L);
        array.add(41L);
        array.add(551L);

        insertSort(array.getArr());

        array.display();
    }

}

三、广告

相关文章

  • 五、Java版直接插入排序

    一、核心思想 抽出一个元素,在其前面的元素中找到适当的位置进行插入。插入排序法:所谓插入排序法乃是将一个数目插入该...

  • 直接插入排序算法(Java版)

    1、基本思想 直接插入排序的基本思想是:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的...

  • 排序算法系列(6)——折半插入排序

    上一节讲了直接插入排序,本次讲一个直接插入排序的进阶版——折半插入排序,二者的排序逻辑是一样的,区别在于: 直接插...

  • Java 实现插入排序

    本文介绍插入排序原理及 Java 语言实现。 目录 插入排序原理 代码实现版本一版本二单元测试 插入排序原理 从第...

  • 直接插入排序算法——Java实现

    直接插入排序,是算法里老生常谈的经典,这里直接先上一段原始版的直接插入排序代码,然后顺着代码理思路,最后再来一段优...

  • c++day09

    插入排序基础版(后插1) 插入排序基础版(后插2) 改进 插入排序基础版(前插) 字符数组 ASCII 的 A =...

  • 插入排序 --- Java版

    算法思路 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 非常类似...

  • JavaScript 实现希尔排序

    原理 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。 希尔排序...

  • 排序_插入排序之希尔排序(缩小增量排序)

    概述 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。 代码实现...

  • 希尔排序

    概念 希尔排序(shell sort) 是插入排序的一种又称“缩小增量排序”,是直接插入排序的一种更为高效的改进版...

网友评论

    本文标题:五、Java版直接插入排序

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