将未绑定的值排序到绑定的比例?

时间:2011-07-18 22:23:39

标签: c algorithm math nsarray

我有一组存储在数组中的未绑定值(如果有帮助的话,它是NSArray)。值的范围可以从0到无穷大(实际上最大值约为100,000,000)。

我需要将数组中的值排序为 0到20 的比例。

例如,如果我有一组1000, 3123, 31 31 0 1000 10 3123 20 。数组的成员数量和最大值都有所不同,所以我知道有很多不同范围的值,很多这些值会占据规模上相同的位置。 大部分时间,商品数量将超过20件(平均商品数量约为100件)。

当商品数量超过20时,部分商品应具有相同的评级。

我需要这个用于每个搜索查询的歌曲人口的视觉表示,其中这些值是歌曲在全球图表上的位置的全局表示。

是否可以创建这样的算法?

3 个答案:

答案 0 :(得分:2)

如果我理解你,你只想对你的值进行排序并将它们映射到0到20的范围?因此,您可以计算您拥有的值(例如11),将您的范围除以此数字 - 1(例如20 /(11 - 1)= 2)并为每个值分配适当的数字(例如0,2,4, 6,8 ...)

答案 1 :(得分:0)

对数组进行排序。现在将每个项目的索引乘以(20 /([myArray count] - 1));注意,计数必须> 1.我猜你不会超过20件?

答案 2 :(得分:0)

像计算一样的百分比对你有帮助吗? 即使用最大值作为100%(即20),其余的映射为最大值的百分比。 对于你的前任:

[ 1000 3123 31 ]
(31/3123)*20 = 2
(1000/3123)*20 = 6 (or 7)
(3123/3123)*20 = 20

这样,最终值(0-20比例)仍将具有初始集中数字的分布。