java小白_李同学 2021-05-12 22:04 采纳率: 75%
浏览 26
已采纳

插入排序,换个参数就错了,明明换的参数和之前是一样的啊

public class insertSort {
    public static void main(String[] args) {
        //如果数组有5个数据,那么需要比较4次
        //定义外层循环
        int[] arry = {23, 32, 1000, 40, 99,12345,1234567,1};

        for (int i = 1; i < arry.length; i++) {//外层length-1 次循环
            //定义一个数据,记录一下从哪开始接着根拍好序的数据比较
            //定义一个变量保存a[i]
            int muddle = arry[i];
            int j = i - 1;
            for (; j >= 0 && arry[j] > muddle/* 这里我用的是muddle ,muddle是arry[i]传过来的,但是这里换成arry[i]就会出错。怎么回事    */; j--) {

                arry[j + 1] = arry[j];


            }

            arry[j + 1] = muddle;


        }
        for (int i = 0; i < arry.length; i++) {
            System.out.println(arry[i]);

        }
    }

}

第二个for循环里面说了,muddle 换成arry[i] 就排序失败,但是上一句muddle的值还是arry[i]给的,咋回事啊,
我白学了么,我傻了

  • 写回答

4条回答 默认 最新

  • benbenli 2021-05-12 22:12
    关注

    内层循环里移动数据时需要检查数据是否比muddle大。

    public class insertSort {
        public static void main(String[] args) {
            //如果数组有5个数据,那么需要比较4次
            //定义外层循环
            int[] arry = {23, 32, 1000, 40, 99,12345,1234567,1};
            for (int i = 1; i < arry.length; i++) {//外层length-1 次循环
                //定义一个数据,记录一下从哪开始接着根拍好序的数据比较
                //定义一个变量保存a[i]
                int muddle = arry[i];
                int j = i - 1;
                for (; j >= 0 && arry[j] > muddle/* 这里我用的是muddle ,muddle是arry[i]传过来的,但是这里换成arry[i]就会出错。怎么回事    */; j--) {
                    if (arry[j] < muddle) {
                        arry[j + 1] = arry[j];
                    }
                    else {
                        break;
                    }
                }
                arry[j + 1] = muddle;
            }
            for (int i = 0; i < arry.length; i++) {
                System.out.println(arry[i]);
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路