java数组插入排序

Posted 程序员大咖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数组插入排序相关的知识,希望对你有一定的参考价值。

????????关注后回复 “进群” ,拉你进程序员交流群????????

作者丨木子走召

来源丨main方法

 本次内容主要是讲解java插入排序算法

    之前有讲到冒泡排序,今天咱们就来说说插入排序,其实代码写法跟冒泡排序极其相似(外层循环轮数,内层循环比较次数,通过嵌套循环实现排序),不同的是插入排序减少了交换次数,冒泡排序是每次与比较值做比较后如果满足条件(大于或小于)就做数据交换,而插入排序是事先记录要插入的初始值,然后从选择值往前面做对比,如果选择值小与等于前面的值就把前面的数值赋给后一位(往后移动一位),遇到比选择值小的则停止对比,将选择值移动到最后一个大于选择值的位置,排序逻辑可以根据自己的需求来更改,比如升序降序等等。

01

插入排序图解

02


代码实现

public static void main(String[] args) {
        //排序数组
        int[] arr = {9,7,8,2,5,1,3,6,4};
        //选择数据
        int select = 0;
        //数组长度
        int arrLen = arr.length;
        //选择从第二个数字开始
        for (int i = 1; i < arrLen; i++) {
            //暂存选择值
            select = arr[i];
            //标记替最后一个大于选择值的下标
            int j = 0;
      /*从选择值往前面做对比,如果选择值小与前面的值就把前面的数值赋给后一位,
      遇到比选择值小的则停止对比*/
            for (j = i; j > 0 && select <= arr[j-1]; j--) {
                arr[j] = arr[j-1];
            }
            //将选择值赋给比选择值小的后一位
            arr[j] = select;
            System.out.print("第"+i+"轮排序后:");
            for (int item : arr) {
                System.out.print(item);
            }
            System.out.println("");//换行
        }
        //排序后
        System.out.print("排序后:");
        for (int item : arr) {
            System.out.print(item);
        }
    }

以下是程序执行后结果:

第1轮排序后:798251364

第2轮排序后:789251364

第3轮排序后:278951364

第4轮排序后:257891364

第5轮排序后:125789364

第6轮排序后:123578964

第7轮排序后:123567894

第8轮排序后:123456789

排序后:123456789

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓

以上是关于java数组插入排序的主要内容,如果未能解决你的问题,请参考以下文章

java数组插入排序

java排序之插入排序(直接插入排序和希尔排序)

7种基本排序算法的Java实现

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

[Java数据结构与算法]简单排序之插入排序

多种排序算法的思路和简单代码的实现