下面的代碼,第二個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
提交
取消