【问题标题】:Bubble Sort of a Random number in javajava中随机数的冒泡排序
【发布时间】:2013-12-09 13:53:57
【问题描述】:

我无法对我的随机数进行排序...

输出全为零,请帮助我...这是我的代码

          import java.util.Random;
          import java.util.Arrays;

      class BubbleSort{
        public static void main(String [] args){
    Random g = new Random();

    int [] number = new int [10];

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

  System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));

                     }
     public static int [] BubbleSortAsceMethod(int[] x){
    int temp;

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

            }
                }
        return x;   
                }
                          }

输出..

随机数:48 12 89 18 99 89 50 56 56 70

已排序的数字:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 处理完成。

【问题讨论】:

  • 实际上,number 从未填充,

标签: java arrays sorting random


【解决方案1】:

您的随机数永远不会被填充。您只需将它们打印给用户,但您传递给冒泡排序的是一个包含0 的数组。因此输出。

int [] number = new int [10];

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

应该是

int [] number = new int [10];

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

【讨论】:

    【解决方案2】:

    您从未将值分配给数组。

    改变

    for (int d = 0 ; d<number.length ; d++){
       int RandomG = g.nextInt(100)+1;
       System.out.print("\t" + RandomG);
    }
    

    到

      for (int d = 0 ; d<number.length ; d++){
         int RandomG = g.nextInt(100)+1;
         System.out.print("\t" + RandomG);
         number[d] = RandomG ; // See here Added this line.
       }
    

    【讨论】:

      【解决方案3】:

      您生成并打印随机数,但从不将它们放入数组中。

      一般来说,最好在填充后打印数组,而不是同时打印,因为那样会立即显示问题。

      【讨论】:

        【解决方案4】:

        输出全为零是因为您只是生成随机数,但没有将它们分配给名为number的随机数数组(int[])。

        看你下面的代码,随机数没有分配给名为number的int[]数组

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

        然后您尝试将 int[] 随机数组 number 传递给方法 BubbleSortAsceMethod。注意,此时,随机数组包含默认值 -- zeros'。

        System.out.print("\nSorted Numbers:"
                    + Arrays.toString(BubbleSortAsceMethod(number)));
        

        你需要做一些改变

        System.out.print("Random Numbers:");
            for (int d = 0; d < number.length; d++) {
                int RandomG = g.nextInt(100) + 1;
                System.out.print("\t" + RandomG);
                number[d] = RandomG;//<=====Assign the random number to array
            }
        

        另外,方法BubbleSortAsceMethod中的for循环有一些错误,

        您需要进行以下更改以使气泡排序正确。

        改变

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

        到

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

        【讨论】:

          【解决方案5】:

          以下代码完美运行:您可以将符号从 > 反转为

          import java.util.*;
          
          public class ArrayClassSort {
           public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("Total numbers :");
            int n = s.nextInt();
          
            double a[] = new double[n];
            for (int i = 0; i < a.length; i++) {
             a[i] = Math.random();
             System.out.println("Random generated total numbers are: " + a[i]);
            }
            System.out.println("\n Sorted Numbers are: " + Arrays.toString(BubbleSortDesc(a)));
           }
          
          
           private static double[] BubbleSortDesc(double[] a) {
            for (int i = 0; i < a.length - 1; i++) {
             for (int j = 1; j < a.length - i; j++) {
              if (a[j - 1] > a[j]) {
               double temp = a[j - 1];
               a[j - 1] = a[j];
               a[j] = temp;
              }
             }
            }
          
            return a;
           }
          
          }

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-09-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-12
            • 2011-12-06
            • 2014-06-25
            • 2017-06-17
            相关资源
            最近更新 更多