簡體   English   中英

將數字數組平均分配到x個數字子集中

[英]Equally distribute array of numbers into x subsets of numbers

我有大量的數字數組,需要將它們分配到x個數字范圍內,以便每個范圍都包含來自原始數組的相等數量的元素。

例如,當x = 4 ,以下數組

[1, 1, 2.5, 3, 6, 7, 10, 11.2, 14, 25, 35, 50, 75, 85.5, 100, 120, 128.9, 150, 200, 260]

將產生一個長度為x + 1的數組,其中以下內容

[1, 6.5, 30, 110, 260]
  • 1是數組中的最小值
  • 6.5是6和7的中點
  • 30是25和35的中點
  • 110是100和120的中點
  • 最高值為260

本質上,這將為我提供4個范圍為1-6.5、6.5-30、30-110和110-260的數字。 每個范圍將包含5個原始數組。

需要能夠處理一定數量的動態元素,這些元素不一定會被x平均划分。

在數學上問了這個問題,但被告知這更多是編程問題。

根據您的問題,以下javascript代碼應滿足您的要求,我已經用x的幾個值測試了其正確性,但是您可能要檢查此代碼是否適用於您問題的所有可能的測試用例。

 var arr = [1, 1, 2.5, 3, 6, 7, 10, 11.2, 14, 25, 35, 50, 75, 85.5, 100, 120, 128.9, 150, 200, 260, 261, 262, 263, 264, 265]; total_elem = arr.length; var x = 5; var each_set_elem = total_elem / x; var i = 1; var temp = []; temp.push(arr[0]); for (i = each_set_elem; i < total_elem; i += each_set_elem) { this_elem = (arr[i] + arr[i - 1]) / 2; temp.push(this_elem); } temp.push(arr[total_elem - 1]); console.log(temp); 

此代碼滿足問題中的測試用例,並且對於x = 5,它會吐出正確的6點,以便5個范圍中的每個都具有給定數組集中的4個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM