zoukankan      html  css  js  c++  java
  • java数组插入排序代码详解

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

    插入排序图解

    在这里插入图片描述

    代码实现

    
    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

  • 相关阅读:
    设计模式学习笔记二十二:对象的轮回
    设计模式学习笔记二十一:代理模式
    Redis学习笔记之ABC
    戒烟日志
    Redis优化之CPU充分利用
    Nginx的作用
    设计模式学习笔记二十:解释器模式
    设计模式学习笔记十九:备忘录模式
    intellIJ IDEA配置maven相关问题记录
    I NETWORK [thread1] waiting for connections on port 27017
  • 原文地址:https://www.cnblogs.com/javakfz/p/13938260.html
Copyright © 2011-2022 走看看