这是问题
编写代码以创建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]);
}
}
}
任何帮助将不胜感激
答案 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.sort
和Collections.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();
我不确定它是否编译但逻辑是正确的。