Java 如何创建一个10000的数组,其中包含的值仅为1-1000?
“每个函数应使用大小为100、1000和10000的数组输入运行;其中每个Java 如何创建一个10000的数组,其中包含的值仅为1-1000?,java,arrays,arraylist,Java,Arrays,Arraylist,“每个函数应使用大小为100、1000和10000的数组输入运行;其中每个 任何数组中的值都应为1–1000(含1–1000)之间的整数。每个排序函数应为 在以下类型的数组上运行:随机数、排序列表和几乎排序的列表” 下面我创建了三个数组 第一个是用1-1000之间的整数随机填充10000的数组 第二个用1-10000之间的整数填充10000的数组。 第三次洗牌10000的数组,其中包括1-10000的整数 我的问题是我不能让第二个和第三个10000数组只包含1-1000之间的值。 甚至有可能吗?
任何数组中的值都应为1–1000(含1–1000)之间的整数。每个排序函数应为
在以下类型的数组上运行:随机数、排序列表和几乎排序的列表” 下面我创建了三个数组 第一个是用1-1000之间的整数随机填充10000的数组 第二个用1-10000之间的整数填充10000的数组。 第三次洗牌10000的数组,其中包括1-10000的整数 我的问题是我不能让第二个和第三个10000数组只包含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);
}
int[]inputTenThousand=newint[10000];//随机10000
对于(int a=0;a
只需在第二个和第三个列表中添加代码,就可以使用现有的代码非常接近。添加元素“mod 1000”可确保列表中没有大于1000的值。(您必须在结果值中添加一个,才能将范围从0-999上移到1-1000)
当然,这不会保留您最初创建的排序顺序,但是一旦生成这些数组,您将注意到一个非常清晰的模式。您的数组现在只是数字1-1000,重复十次。这使得绘制阵列的外观变得非常容易:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
...
1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000]
因此,我们首先可以构建一个很好的排序列表:
int [] inputTenThousand2 = new int[10000]; // 10000 sorted integers
for (int v = 0; v < 1000; v++) { // loop from 0 to 999
for (int i = 0; i < 10; i++) {
inputTenThousand2[(10*v) + i] = v + 1; // Set ten elements per value of the outer loop
}
}
int[]inputTenThousand2=新的int[10000];//10000个排序整数
对于(intv=0;v<1000;v++){//从0到999循环
对于(int i=0;i<10;i++){
InputEnthousAnd2[(10*v)+i]=v+1;//为外循环的每个值设置十个元素
}
}
然后,您可以将此列表复制到第三个列表中,并为您的第三个案例“稍微取消排序”
当然,根据您有权访问的内容(这看起来像是一个任务,所以可能您没有现成的排序功能),可能更容易创建第一个列表,然后复制它并对第二个列表进行排序。@RC。再次阅读问题:数组的大小是10k,但元素的大小是从1到1k。@Luigimendoza diagonal read让我明白了,谢谢help@vishram0709……但可能不是。这里没有数组大小的问题,除非幕后发生了非常意外的事情。但是我在描述中添加的引用(这是我项目的一部分)并不是说数组大小为10000,而是1-1000个整数。我认为数组应该有10000个整数,但只有1-1000意味着会有重复的。我读错了吗?@user3478869是的,一个10000个整数在
1
和1000
之间的数组必然会有重复项。平均而言,每个整数将在均匀随机分布中重复十次。我的建议是通过创建一个排序数组来形式化这一事实,该数组包含10个1、10个2、10个3。。。一直到十个1000。谢谢你,先生。这是我的另一个问题,实际上我不知道怎么会有一个“稍微不排序”的数组?这就是我为什么用洗牌的原因。我知道它不会创建稍微不排序的数组,但不知道还能做什么。@user3478869很高兴我能帮上忙!至于什么构成了一个“几乎排序”的数组,你必须要求澄清这意味着什么,无论你从哪里得到这个任务。也许你可以复制排序的数组,交换任意两个不相等的元素,这就足够了——在我的书中,这算是“几乎排序”了!
int [] inputTenThousand2 = new int[10000]; // 10000 sorted integers
for (int v = 0; v < 1000; v++) { // loop from 0 to 999
for (int i = 0; i < 10; i++) {
inputTenThousand2[(10*v) + i] = v + 1; // Set ten elements per value of the outer loop
}
}