【发布时间】:2014-03-31 07:02:10
【问题描述】:
我试图生成一个数组,其中包含 1000 个整数的非重复数字,按从 0 到 10,000 的升序排列
到目前为止,我拥有的是:
public static void InitArray(int[] arr) { // InitArray method
int i, a_num; // int declared
Random my_rand_obj = new Random(); // random numbers
for (i = 0; i <= arr.length-1; i++) // for loop
{
a_num = my_rand_obj.nextInt(10000); // acquiring random numbers from 0 - 10000
arr[i] = a_num; // numbers being put into array (previoulsy declared of size 1000)
}
}
public static void ShowArray(int[] arr) { // ShowArray method
int i; // int declared
for (i = 0; i <= arr.length-1; i++) { // for loop
System.out.print(arr[i] + " "); // show current array content
}
System.out.println(); // empty line
}
public static void Sort(int[] arr) { // SortArray method
int i, min, j; // int decalred
for (i = 0; i < arr.length-1; i++) { // for loop
min = i; // min is i
for (j = i + 1; j < arr.length; j++) { // nested for loop
if (arr[j] < arr[min]) { // if statement
min = j; // j is the new minimum
}
}
int swap = arr[min]; // swap "method"
arr[min] = arr[i];
arr[i] = swap;
}
}
有什么方法可以检查数字不重复吗?除了随机生成器之外,是否还有一个功能可以让我生成数字而不重复?感谢您的帮助
【问题讨论】:
-
您可以简单地通过使用索引迭代 for 循环来生成数字 - 它会满足您的要求。
-
如果你想确保有非重复元素,将你的数组转换为 HashSet,对其进行排序并检查它的大小与数组的大小..(还有其他几种“有效”的方法也一样。)。顺便说一句,您正在重新发明轮子.. Set 只允许唯一值,为什么不使用它而不是数组?
-
How to generate random unique numbers? - 这应该是一本不错的读物,然后您可能可以将
Set/List转换为数组并使用Arrays.sort()对其进行排序。