【问题标题】:Java Bubble Sort wrong outputJava冒泡排序错误输出
【发布时间】:2023-04-07 18:09:02
【问题描述】:

我正在尝试实现一个基本的 java 冒泡排序,但输入错误..

代码是:

public class BubbleSort{
    public static void main(String args[]){

        int [] arr_sort=new int [] {5, 10, 50, 32, 52, 25};

        System.out.println("Bubble Sort");
        System.out.println("Before sorting: ");

        int x;
        for (x=0; x<6; x++){
        System.out.print(arr_sort[x] + " ");
        }
        System.out.println();
        System.out.println("After Sorting");

        int n = arr_sort.length;
        int temp = 0;

        for(int i=0; i<n; i++){
            for(int j=1; j<(n-1); j++){
                if(arr_sort[j-1] > arr_sort[j]){
                    temp = arr_sort[j-1];
                    arr_sort[j-1] = arr_sort[j];
                    arr_sort[j] = temp;
                }
            } System.out.print(arr_sort[i] + " ");
        }
    }
}

结果:

Bubble Sort
Before sorting: 
5 10 50 32 52 25 

After Sorting
5 10 32 50 52 25 

Process completed.

数组的不同整数:

Bubble Sort

Before sorting: 
2 10 1 15 62 71 

After Sorting
2 2 10 15 62 71 

Process completed.

我迷路了,我不知道该怎么办..请帮助..

提前致谢。 顺便说一句,这是一个家庭作业。

【问题讨论】:

    标签: java sorting bubble-sort


    【解决方案1】:
    boolean flag = true;
    while (flag){
      flag = false;
      for(int j = i+1; j < n; j++) {
            if(arr_sort[j] < arr_sort[i]) {
                temp = arr_sort[i];
                arr_sort[i] = arr_sort[j];
                arr_sort[j] = temp;
                flag= true;
            }
        } 
    }
    

    这就是经典的冒泡排序...

    【讨论】:

      【解决方案2】:
              for(int i=0; i<n; i++){
                  for(int j=1; j<n-i; j++){
                      if(arr_sort[j-1] > arr_sort[j]){
                          temp = arr_sort[j-1];
                          arr_sort[j-1] = arr_sort[j];
                          arr_sort[j] = temp;
                      }
                  } 
                  System.out.print(arr_sort[n-i-1] + " ");
              }
      

      修复了一些索引问题。试试上面的代码。它按降序输出数组。

      【讨论】:

      • 嘿,谢谢!我实际上是在我做升序之后再做降序,至少你让我更容易了。
      • @user2768501 它仍然按升序对数组进行排序。它只是按降序输出数组。
      【解决方案3】:
      for(int i = 0; i < n; i++) {
          for(int j = i+1; j < n; j++) {
              if(arr_sort[j] < arr_sort[i]) {
                  temp = arr_sort[i];
                  arr_sort[i] = arr_sort[j];
                  arr_sort[j] = temp;
              }
          } 
      }
      

      【讨论】:

      • 我试着把它改成那个,我得到了这个: 排序前:5 10 50 32 52 25 排序后 5 10 50 50 52 52 排序前:2 10 1 15 62 71 排序后 2 10 10 15 62 71
      猜你喜欢
      • 2016-01-19
      • 2016-02-18
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多