冒泡在java中排序随机数

时间:2013-12-09 13:53:57

标签: java arrays sorting random

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

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

          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] 流程已完成。

5 个答案:

答案 0 :(得分:2)

您的随机数从未填充过。您只需将它们打印出来给用户,但传递给冒泡排序的是包含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;
}

答案 1 :(得分: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.
   }

答案 2 :(得分:0)

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

一般来说,最好在填充后再打印阵列,而不是同时进行,因为这会立即显示问题。

答案 3 :(得分:0)

输出全为零'是因为您只生成随机数,但不将它们分配给名为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;
            }

        }
    }

答案 4 :(得分:0)

以下代码完美无缺:您可以撤消&gt;中的符号到&lt;在代码中获得降序。

&#13;
&#13;
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;
 }

}
&#13;
&#13;
&#13;