[英]How would you make an array of 10000 with only values of 1-1000 inclusive?
“每個功能都應使用大小分別為100、1000和10000的數組輸入運行;其中每個
任何數組中的值都應為1到1000(含)之間的整數。 每個排序功能都應該
在以下類型的數組上運行:隨機數,排序列表和幾乎排序的列表”
下面,我創建了三個數組。
第一個將10000的Array隨機填充為1-1000的整數。
Second用10000至10000的整數填充10000的數組。 10000的第三個Shuffle數組,其中包含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);
}
您只需使用第二個和第三個列表的模運算符 ,即可使用已有的代碼非常接近。 添加元素“ mod 1000”可確保列表中沒有大於1000的值。(必須在結果值中加1,以將范圍從0-999增大到1-1000)。
inputTenThousand2[a] = (a % 1000) + 1;
當然,這不會保留您最初創建的排序順序,但是一旦生成這些數組,您會注意到一個非常清晰的模式。 您的數組現在只是數字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
}
}
然后,您可以將此列表復制到第三列表中,並針對您的第三種情況“稍微取消排序”!
當然,根據您可以訪問的內容(這看起來像是一項作業,因此可能沒有隨時可用的排序方法),創建第一個列表就更容易了,然后將其復制並對第二種情況進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.