为了账号安全,请及时绑定邮箱和手机立即绑定

如何将我的插入排序代码修复为升序?我的输出顺序错误

如何将我的插入排序代码修复为升序?我的输出顺序错误

米琪卡哇伊 2021-12-18 15:47:25
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]);

   }

}


查看完整回答
反对 回复 2021-12-18
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您必须在处理后打印整个数组,而不是在循环中。从环上取下打印线并放在环外。


查看完整回答
反对 回复 2021-12-18
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

你的代码是正确的。但是,打印元素的方式存在问题。请记住,您的数组仅在第一个 for 循环完成后a[j]进行排序,但您是在排序过程中打印的。此时元素根本没有排序,因此您得到错误的输出。因此,您从第二个 for 循环中删除该打印语句,并在排序结束后使用另一个 for 循环进行打印。


查看完整回答
反对 回复 2021-12-18
  • 3 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信