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

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]给的,咋回事啊,
我白学了么,我傻了

内层循环里移动数据时需要检查数据是否比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]);
        }
    }
}

 

求解,迷惑

这就是个简单的插入排序啊,着怎么回事啊

 

int muddle = arry[i]; 这个是设置一个变量暂存arry[i]

不暂存使用arry[i] ,你内层for循环条件成立,里面的arry[j + 1] = arry[j]; 是交换了arry[i] = arry[j],但是外层循环arry[j + 1] = muddle; ==》 arry[j + 1]=arry[i]  不又把他换回去了?