public class InsertionSort{public static void main(String [] args){ int [] a = {45,23,4,6,2}; for(int i = 0; i< a.length; i++){ for(int j = i; j>0; j--){ if(a[j]< a[j-1]){ int temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; System.out.println(a[j]); } } } }}输出:45 45 23 45 23 45 23 6 4我希望它按升序排列。
3 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
您的数组已经排序,您只需将打印语句移出循环
public static void main(String [] args){
int [] a = {45,23,4,6,2};
for(int i = 0; i< a.length; i++){
for(int j = i; j>0; j--){
if(a[j]< a[j-1]){
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
// Arrays.stream(a).forEach(System.out::println); -- Java 8
for (int idx = 0; idx < a.length; idx++) {
System.out.println(a[idx]);
}
}
慕码人8056858
TA贡献1803条经验 获得超6个赞
你的代码是正确的。但是,打印元素的方式存在问题。请记住,您的数组仅在第一个 for 循环完成后a[j]
进行排序,但您是在排序过程中打印的。此时元素根本没有排序,因此您得到错误的输出。因此,您从第二个 for 循环中删除该打印语句,并在排序结束后使用另一个 for 循环进行打印。
添加回答
举报
0/150
提交
取消