如何根据已知的排序结果,计算出百分比排名

我们已知一个排序后的数组(或列表),需要计算每个数值的百分比排名。
百分比排名的定义:对于一个数值,它的百分比排名等于(小于该数值的个数 + 0.5 * 等于该数值的个数)/ 总个数 * 100%
注意:这个定义是标准统计中的百分比排名(percentile rank),它考虑了相同值的情况。

步骤:

  1. 首先,我们需要统计每个数值出现的频率,并记录每个数值在排序后的位置。
  2. 然后,对于每个数值,计算小于它的数值个数(即它前面的所有数值的个数)和等于它的数值个数(即它自身的频率)。
  3. 使用公式:百分比排名 = (小于该数值的个数 + 0.5 * 等于该数值的个数) / 总个数 * 100

但是,我们也可以不预先排序,而是先排序,然后遍历排序后的数组,同时统计每个值的排名。

由于题目中已知一个数值组(130个数值),我们可以这样做:

  • 对数组进行排序(从小到大)
  • 然后,对于每个数值,我们计算小于它的数值的个数(即排序后它前面的元素个数)和等于它的个数(在数组中出现的次数)

但是注意:在排序后的数组中,相同的数值会相邻。因此我们可以遍历排序后的数组,同时记录每个数值第一次出现的位置和出现的次数。

然而,我们也可以使用另一种方法:先统计每个数值出现的频率,然后计算累积分布。

具体步骤:

  1. 对数组进行排序(升序)。
  2. 创建一个字典来记录每个数值的频率。
  3. 计算每个数值的百分比排名:对于数值x,首先找到它在排序后第一次出现的位置(即第一个等于x的索引),那么小于x的个数就是该索引(因为前面都是比x小的)。同时,等于x的个数就是频率。
  4. 但是注意:排序后,相同数值会连续出现,所以我们可以遍历排序后的数组,同时记录当前数值以及它的起始位置。

然而,我们可以更高效地一次遍历完成:

方法:
排序数组:sorted_arr
初始化一个空字典来存储每个数值的百分比排名(因为相同数值的排名相同)
然后,我们遍历排序后的数组,同时记录当前数值和它出现的次数(或者我们可以提前统计频率,然后遍历时跳过重复值)

另一种做法:
先统计每个数值的频率,然后计算累积频率(小于当前数值的累积个数),然后对于每个数值,用累积频率(即小于该数值的个数)加上0.5倍的该数值的频率,再除以总数,乘以100。

具体步骤:
步骤1:对数组排序
步骤2:统计每个数值的频率(可以用字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清泉-通达信编程专家-苏大毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值