问答详情
源自:6-6 编程练习

求大神解答

为什么 这样子不行?大神求解答

提问者:guaguaerhao 2014-12-11 17:26

个回答

  • _潇潇暮雨
    2014-12-11 20:28:17

    26行换成这样就对了,if(nums[i] < min),因为还有等于的情况。以下是排序的详细过程:

    nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };

    min = max = nums[0] = 61;

    i = 0,nums[0](61)<= max(61),else执行,min = nums[0] = 61;

    i = 1,num[1](23) <= max(61),else执行,min = nums[1] = 23;

    i = 2,nums[2](4) <= max(61),else执行,min = nums[2] = 4;

    i = 3,nums[3](74) > max(61),else语句不执行,此时min = 4;

    i = 4,nums[4](13) <= max(74),else执行,min = 13,此时程序就已经显现出错误。

    i = 5,nums[5](148) > max(74),else语句不执行,min = 13;

    i = 6,nums[6](20) <= max(148),else执行,min = 20;

        所以你的代码运行结果是20.算最小值其实和最大值没有关系,与max进行比较,逻辑上说不通啊。