public static int[] bubbleSort(int[] inputArray){ for(int i = 0; i < inputArray.length - 1; i++ ){ int tempa = inputArray[i]; int tempb = inputArray[i + 1]; if(inputArray[i] > inputArray[i + 1]){ inputArray[i] = tempb; inputArray[i + 1] = tempa; i = 0; System.out.println(Arrays.toString(inputArray)); } } return inputArray;}此實現接受[20, 35, -15, 7, 55, 1, -22]并返回[20, -22, -15, 1, 7, 35, 55]. 對除第一個索引之外的所有內容進行排序。
1 回答

藍山帝景
TA貢獻1843條經驗 獲得超7個贊
為什么...跳過第一個索引?
因為您i = 0
在循環內部設置,但隨后循環將執行i++
,因此僅在第一次迭代時檢查第一個元素,而不是在任何“重新啟動”時檢查。
要正確重新啟動,請使用i = -1
使i++
重新啟動發生在i = 0
,而不是在i = 1
。
這將使代碼正常工作,但是在交換兩個元素后立即重新啟動效率很低,因為您將反復重新檢查數組的開頭。
添加回答
舉報
0/150
提交
取消