90分位数(非原创,不知道作者谁了 网上好多篇这个文章,只是在此记录一下)

[1,2,3,4,5,6,6,6,6,7,8,9]这个list的90分位数是7.9

计算原理:

首先将你的输入数组进行从小到大排序,然后计算:

(n−1)∗p=i+j

  其中n为数组元素的个数,将计算结果的整数部分用i表示,小数部分用j来表示。则最终的percentile值为:

res=(1−j)∗array[i]+j∗array[i+1]  (这个是取加权平均)

  因为题目给的数组是排好序的,所以我们计算(n-1)*p = (12-1)*0.9 = 9.9,则整数部分 i=9,小数部分j=0.9。查找数组得知,array[i] = array[9] = 7;array[i+1] = array[10] = 8。

  因为,我们可以得到测试样例的结果为:

res=(1−j)∗array[i]+j∗array[i+1]=(1−0.9)∗7+0.9∗8=7.9

发布了13 篇原创文章 · 获赞 7 · 访问量 5995

猜你喜欢

转载自blog.csdn.net/kangseung/article/details/82698622