-4

这就是问题

编写代码来创建一个包含 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]);
        }
    }
}

任何帮助将非常感激

4

3 回答 3

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....
    }
}
于 2013-11-06T18:41:49.260 回答
0

如果没有限制,我们可以使用Arrays.sortandCollections.reverseOrder()

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

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

于 2013-11-06T18:33:56.823 回答
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();

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

于 2013-11-06T18:36:42.427 回答