一百万双打

时间:2013-11-06 18:21:01

标签: java sorting

这是问题

编写代码以创建1,000,000双打的数组。使用10到5000之间的随机值填充数组。填充数组后,按DESCENDING顺序对数组进行排序。对阵列的排序方式没有限制。

这是我到目前为止所拥有的

import java.util.Random;

public class OneMillionDoubles {
    public static void main(String args[])
    {
        int x = 10;
        double [] array = new double[x];

        int[] num = new int[10];
        Random generator = new Random();
        for (int i = 0; i < 10; i++) {
            num[i] = generator.nextInt(4999) + 10;

            System.out.println(num[i]);
        }
    }
}

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

import java.util.Random;

public class OneMillionDoubles {
    static final int NUM_DUBS = 1000000;
    public static void main(String args[])
    {
        double [] array = new double[NUM_DUBS];
        Random generator = new Random();
        for (int i = 0; i < NUM_DUBS; i++) {
            array[i] = generator.nextDouble();
        }
        Arrays.sort(array);
        //reverse the order of the array, O(n) operation....
    }
}

答案 1 :(得分:0)

如果没有限制,请使用Arrays.sortCollections.reverseOrder()

Arrays.sort(yourArray, Collections.reverseOrder());

确保您的数组是Double[]而不是double[]的数组。无法对原始类型进行排序。

答案 2 :(得分:0)

int[] array = new int[1000000];
Random rand = new Random();
for (int i = 0; i < array.length; i++)
    array[i] = rand.nextInt(4999) + 10;
Arrays.sort(array);
System.out.println(Arrays.toString(array));
// in reverse order
for (int i = array.length - 1; i >= 0; i--)
    System.out.print(array[i] + " ");
System.out.println();

我不确定它是否编译但逻辑是正确的。