输入10数,按从小到大(或者从大到小),要用到2个循环,内层循环全部执行完成,只执行一次   int temp =a[j],a[j]=a[i],a[i] = temp
我们平时的程序是内层循环每一次都要执行一次调换数,现在要求你10个数,只允许执行10次int temp =a[j],a[j]=a[i],a[i] = temp,就可以完成排序

解决方案 »

  1.   

    其实只要对选择排序稍微修改一下就可以了,其实交换次数应该是9次public static void main(String[] args) {
        int[] nums = {9, 0, 3, 2, 4, 1, 5, 8, 7, 6};    for (int i = 0; i < nums.length -1; i++) {
    //用maxIndex 保存最大元素的索引
            int maxIndex = i;
            for (int j = i +1; j < nums.length; j++) {
                if(nums[j] > nums[maxIndex])
                    maxIndex = j;
            }
    //外循环交换
            int temp = nums[i];
            nums[i] = nums[maxIndex];
            nums[maxIndex] = temp;
        }
    }