快捷导航

排序问题。

下面的代码,第二个if判断是干嘛的啊,麻烦解读下public static void main(String[] args) {                int [] arr = {23,14,1,22,9};                int size = arr.length - 1;                for(int i = 0; i < size; i++) {                        if (arr > arr[i + 1]) {                                int temp = arr;                                arr = arr[i + 1];                                arr[i + 1] = temp;                        }                        if (i == size -1) {                                i = -1;                                size--;                        }                }                System.out.println(Arrays.toString(arr));        }

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

因为第一整轮排序只能确定所有数字里最大的数,经过前后比较交换完后就只是把23移到最后,那么前面的顺序还是14,1,22,9还没排好。那第二次排序if(i==size-1)这是判断第一整轮循环比较只要等于最后一次比较的时候,由于要进行第二轮排序,此时i=-1是加1后能正常第二轮循环,那么第二轮最后一个数字就不要在参加前面的比较了,因此比较的次数要减1,size--;第三轮以此类推
回复

使用道具 举报

这个是冒泡排序。

第二个if是用来重新开始的。当i到了size-1时,把i=-1,然后循环继续i++,那么i就等于0了(重新开始)。另外,还用了size--,是用来减少for循环判断i
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP