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;}此實(shí)現(xiàn)接受[20, 35, -15, 7, 55, 1, -22]并返回[20, -22, -15, 1, 7, 35, 55]. 對(duì)除第一個(gè)索引之外的所有內(nèi)容進(jìn)行排序。
1 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
為什么...跳過第一個(gè)索引?
因?yàn)槟?code>i = 0在循環(huán)內(nèi)部設(shè)置,但隨后循環(huán)將執(zhí)行i++
,因此僅在第一次迭代時(shí)檢查第一個(gè)元素,而不是在任何“重新啟動(dòng)”時(shí)檢查。
要正確重新啟動(dòng),請(qǐng)使用i = -1
使i++
重新啟動(dòng)發(fā)生在i = 0
,而不是在i = 1
。
這將使代碼正常工作,但是在交換兩個(gè)元素后立即重新啟動(dòng)效率很低,因?yàn)槟鷮⒎磸?fù)重新檢查數(shù)組的開頭。
添加回答
舉報(bào)
0/150
提交
取消