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

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


我希望它按升序排列。


米琪卡哇伊
浏览 150回答 3
3回答

一只斗牛犬

您的数组已经排序,您只需将打印语句移出循环public static void main(String [] args){&nbsp; &nbsp; int [] a = {45,23,4,6,2};&nbsp; &nbsp; for(int i = 0; i< a.length; i++){&nbsp; &nbsp; &nbsp; &nbsp; for(int j = i; j>0; j--){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(a[j]< a[j-1]){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int temp = a[j];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a[j] = a[j-1];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a[j-1] = temp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; // Arrays.stream(a).forEach(System.out::println); -- Java 8&nbsp; &nbsp;for (int idx = 0; idx < a.length; idx++) {&nbsp; &nbsp; &nbsp; System.out.println(a[idx]);&nbsp; &nbsp;}}

慕莱坞森

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

慕码人8056858

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

相关分类

Java