(刚学java)为什么输不出10 12 23 45 90的顺序

img

我想要输出10 12 23 45 90的顺序
但是输出了10 12 45 90 23的顺序,这代码哪里有问题

你是想用冒牌排序吗?怎么看起来怪怪的,对是不可能对的。我给你改改不介意吧?


public class Homework {
    public static void main(String[] args) {
        int[] arr = {10, 12, 45, 90};
        int[] arr1 = new int[arr.length + 1];
        for(int i=0; i<arr.length;i++){
            arr1[i] = arr[i];
        }
        arr1[4] = 23;
        for(int i=0; i<arr1.length;i++){
            for(int j=0; j<arr1.length-i-1; j++){
                if(arr1[j] > arr1[j+1]){
                    int temp = arr1[j];
                    arr1[j] = arr1[j+1];
                    arr1[j+1] = temp;
                }
            }
        }
        arr = arr1;
        for (int i=0; i<arr.length; i++){
            System.out.print(arr[i] + " ");
        }
    }
}

排序那里有问题。修改如下:



public class Homework04 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int[] arr = {10,12,45,90};
        int [] arr1 = new int[arr.length+1];
        for(int i=0;i<arr.length;i++) {
            arr1[i]=arr[i];
        }
        
        arr1[4] = 23;
        //arr1[5] = 1;
//        System.out.println("原arr1:");
//        for(int i=0;i<arr1.length;i++) {
//            System.out.print (arr1[i]+" ");
//        }
//        System.out.println();
//        
        for(int i=0;i<arr1.length-1;i++) { //外层循环遍历前length-1个数
            for(int j=i;j<arr1.length;j++) {  //内存循环比较当然i位置的数到数组最后一个数
                if(arr1[i]>arr1[j]) {    //把当前i位置的数和后面的数比较,如果i位置的数大于后面的数,则交换他们,从而达到排序数组的目的
                    //System.out.println("befor,arr1["+i+"]="+arr1[i]+",arr1["+j+"]="+arr1[j]);
                    int temp = arr1[i];
                    arr1[i] =arr1[j];
                    arr1[j]=temp;
                    //System.out.println("after,arr1["+i+"]="+arr1[i]+",arr1["+j+"]="+arr1[j]);
                }
            }
        }
//        for(int i=0;i<arr1.length-1;i++) {
//            for(int j=arr1.length-1;j>0;j--) {
//                if(arr1[j-1]>arr1[j]) {
//                    int temp = arr1[j];
//                    arr1[j] =arr1[j-1];
//                    arr1[j+1]=temp;
//                }
//            }
//        }
//        System.out.println("排序后:");
//    
//        System.out.println("原arr1:");
//        for(int i=0;i<arr1.length;i++) {
//            System.out.print (arr1[i]+" ");
//        }
//        System.out.println();
        
        arr=arr1;
        for(int i=0;i<arr.length;i++) {
            System.out.print (arr[i]+" ");
        }
    }
    
    

}

img

改成arr1[i-1] 试试