亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

排序問題。

排序問題。

fenkapian 2017-04-20 22:55:53
下面的代碼,第二個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--;第三輪以此類推

查看完整回答
反對 回復 2017-04-21
?
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;
    }
  }
}
查看完整回答
2 反對 回復 2017-04-21
  • 3 回答
  • 1 關注
  • 1395 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號