Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建一个10000的数组,其中包含的值仅为1-1000?_Java_Arrays_Arraylist - Fatal编程技术网

Java 如何创建一个10000的数组,其中包含的值仅为1-1000?

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之间的值。 甚至有可能吗?

“每个函数应使用大小为100、1000和10000的数组输入运行;其中每个
任何数组中的值都应为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
    }
}