下面的代码,第二个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[i] > arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } if (i == size -1) { i = -1; size--; } } System.out.println(Arrays.toString(arr)); }
3 回答
已采纳
我是新手_请多指教
TA贡献140条经验 获得超79个赞
因为第一整轮排序只能确定所有数字里最大的数,经过前后比较交换完后就只是把23移到最后,那么前面的顺序还是14,1,22,9还没排好。那第二次排序if(i==size-1)这是判断第一整轮循环比较只要等于最后一次比较的时候,由于要进行第二轮排序,此时i=-1是加1后能正常第二轮循环,那么第二轮最后一个数字就不要在参加前面的比较了,因此比较的次数要减1,size--;第三轮以此类推
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
这个是冒泡排序。
第二个if是用来重新开始的。当i到了size-1时,把i=-1,然后循环继续i++,那么i就等于0了(重新开始)。另外,还用了size--,是用来减少for循环判断i<size里的size。
相当于下面的正常写法:
for(int i=0;i<size;i++){ for(int j=0;j<size-i;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }
添加回答
举报
0/150
提交
取消