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
提交
取消