【问题标题】:How to sort random number in bubble sort如何在冒泡排序中对随机数进行排序
【发布时间】:2015-11-28 06:42:32
【问题描述】:

我正在尝试运行一个程序,该程序将打印 1000 个随机数并以冒泡排序对其进行排序,但是当我运行此代码时,它会打印我的 1000 个随机数,但不会对其进行排序。请帮我理解。

import java.util.Random;
import java.util.Arrays;
public class JavaApplication3 {
    public static void main(String [] args){
        Random g = new Random();

        int [] number = new int [1000];

        System.out.print("Random Numbers:");
        for (int d = 0 ; d<number.length ; d++){
            int RandomG = g.nextInt(1000)+1;
            System.out.print(" " +RandomG);
        }

        System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
    }
    public static int [] BubbleSortAsceMethod(int[] number){
        int temp;

        for(int i = 0 ; i < number.length-1 ; i++){
            for ( int j = 1 ; j < number.length-1 ; j++){
                if ( number[j-1] < number[j]){
                    temp = number[j-1];
                    number[j-1] = number[j];
                    number[j] = temp;
                }
            }
        }
        return number;   
    }
}

【问题讨论】:

    标签: java arrays sorting random bubble-sort


    【解决方案1】:

    花点时间,用笔和纸画出您的代码实际执行的操作。虽然缩进很难看懂,但我相信你的错误在于双 for 循环(J 错了)祝你好运!

    【讨论】:

      【解决方案2】:

      您没有使用随机数初始化“数字”数组,而是将其大小设置为 1000。我认为这就是它没有整理好的原因。你必须把你的“数字”数组放在第一个 for 循环中,并用这样的随机值初始化/填充它:-

      for (int d = 0 ; d<number.length ; d++){
          int RandomG = g.nextInt(1000)+1;
          number[d] = RandomG;
          System.out.print(" " +RandomG);
          }
      

      这里是完整的代码:-

      package stackoverflow;
      import java.util.Random;
      import java.util.Arrays;
      /**
       *
       * @author User
       */
      public class StackOverFlow {
      
          /**
           * @param args the command line arguments
           */
          public static void main(String[] args) {
              // TODO code application logic here
              Random g = new Random();
      
              int [] number = new int [1000];
      
              System.out.print("Random Numbers:");
              for (int d = 0 ; d<number.length ; d++){
                  int RandomG = g.nextInt(1000)+1;
                  number[d] = RandomG;
                  System.out.print(" " +RandomG);
                  }
      
              System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
      
          }
          public static int [] BubbleSortAsceMethod(int[] number){
              int temp;
      
              for(int i = 0 ; i < number.length-1 ; i++){
                  for ( int j = 1 ; j < number.length-i-1 ; j++){
                      if ( number[j-1] > number[j]){
                          temp = number[j-1];
                          number[j-1] = number[j];
                          number[j] = temp;
                      }
                  }
              }
              return number;  
          }
      
      }
      

      【讨论】:

      • 内部 for 循环应该是:for (int j = 1 ; j
      【解决方案3】:

      当 number[j-1] 大于 number[j](不小于)时,数字是乱序的,需要交换,除非您希望它们以相反的顺序排序。

      内循环应该是j

             for (int j = 1 ; j < number.length - i ; j++){
                  if (number[j-1] > number[j]){
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-31
        • 2020-05-17
        相关资源
        最近更新 更多