繁体   English   中英

在Java中对随机数进行冒泡排序

[英]Bubble Sort of a Random number in java

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

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

          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]处理完成。

您的随机数永远不会填充。 您可以简单地将它们打印出给用户,但是传递给冒泡排序的是一个包含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;
}

您从未将值分配给数组。

更改

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.
   }

您生成并打印您的随机数,但永远不要将其放入数组中。

通常,您最好在填充阵列后再打印该阵列,而不要同时进行,因为那样会立即出现问题。

输出全为零”是因为您只是生成随机数,而没有将它们分配给名为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 请注意,目前,随机数组包含默认值-零。

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;
            }

        }
    }

这是完美运行的代码:您可以将符号从>反转为<以获取代码中的降序。

 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; } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM