007Detective 2017-05-18 06:47 采纳率: 0%
浏览 936

java的选择排序出现问题了

我自己先写的选择排序

 public static int[] Sort(int[] arr) {
        for(int i = 0; i< arr.length; i++){
            int index = i;
            for(int j = i + 1; j < arr.length; j++){
                if(arr[i] > arr[j])
                    index = j;
            }
            if(index != i){
                int temp = arr[i];
                arr[i] = arr[index];
                arr[index] = temp;
            }
        }

        return arr;
    }

然后定义数组

 int[] arr = {2,3,5,4,7,2,6};

打印出来的结果是:2 2 3 4 6 5 7
但是当把二层for循环中的if语句

 for(int j = i + 1; j < arr.length; j++){
                if(arr[i] > arr[j])
                    index = j;
            }

换成

 for(int j = i + 1; j < arr.length; j++){
                if(arr[index] > arr[j])
                    index = j;
            }

打印就是对的:2 2 3 4 5 6 7

这是为什么啊?按理index和i是相等的啊?

  • 写回答

5条回答 默认 最新

  • qq_38762162 2017-05-18 06:59
    关注

    不相等啊,你第2层循环只要if语句执行了,就对Index值进行了修改的。。

    评论

报告相同问题?