“每个函数都应该使用数组输入运行,大小为100,1000和10000;其中每个都是
任何数组中的值应该是1到1000之间的整数 . 每个排序功能都应该是
在以下类型的数组上运行:随机数,排序列表和几乎排序的列表“
下面我创建了三个数组 .
第一个用1-1000的整数随机填充10000个数组 .
第二个填充10000的数组,整数从1-10000 . Third Shuffles数组10000,包括1-10000的整数 .
我的问题是我不能得到10000的第2和第3个数组只包含1-1000的值 . 甚至可能吗?我是新手 . 任何帮助将不胜感激!!
int [] inputTenThousand = new int[10000]; // Random 10000
for (int a = 0; a < inputTenThousand.length; a++) {
inputTenThousand [a] = (int) (Math.random () * 1000);
}
int [] inputTenThousand2 = new int[10000] // Sorted 10000
for (int a = 0; a < inputTenThousand2.length; a++) {
inputTenThousand2[a] = a + 1;
}
List<Integer> TenThousandList = new ArrayList<Integer>();
for (int i = 1; i < 10001; i++) {
TenThousandList.add(i);
}
Collections.shuffle(TenThousandList);
int[] inputTenThousand3 = new int[TenThousandList.size()]; // Almost Sorted 10000
for (int i = 0; i < TenThousandList.size(); i++) {
inputTenThousand3[i] = TenThousandList.get(i);
}
for (int i = 0; i < inputTenThousand3.length; i++) {
inputTenThousand3[i] = TenThousandList.get(i);
}
1 回答
您可以使用已有的代码非常接近,只需为第二个和第三个列表添加modulo operator即可 . 添加元素"mod 1000"可确保列表中没有大于1000的值 . (您必须在结果值中添加一个值才能将范围从0-999更改为1-1000) .
当然,这并不保留您最初创建的排序顺序,但是一旦生成这些数组,您就会注意到一个非常清晰的模式 . 你的阵列现在只是数字1-1000,重复十次 . 这使得描绘阵列看起来很简单:
所以,我们可以首先构建那个很好的排序列表:
然后,您可以将此列表复制到第三个列表中,并为您的第三个案例“稍微取消”它!
当然,取决于你有权访问的内容(这看起来像是一个赋值,所以也许你没有随时可用的排序),你可能更容易创建第一个列表,然后复制它和为第二种情况排序 .