中位数计算中的复杂性常数与一般分位数相同吗?

计算科学 复杂 r
2021-12-09 08:46:22

我想知道计算中位数的时间复杂度常数是否与计算一般分位数不同。

以 R 为例:

fx01<-function(ll,a) quantile(a[,ll],0.75)
fx02<-function(ll,a) median(a[,ll])

n<-1000
d<-1000
a<-matrix(rnorm(n*d),n,d)

system.time(lapply(1:d,fx01,a=a))
system.time(lapply(1:d,fx02,a=a))

通常,我观察到计算一般分位数所花费的时间是中位数的 2-4 倍。我想知道这是一个实施问题还是一成不变的。

1个回答

要计算中位数,必须创建一个排序列表,计算列表中元素的数量,并根据元素的数量读取列表中的一个或两个值。

http://mathworld.wolfram.com/StatisticalMedian.html

我看不出任何其他分位数操作需要更长的时间的理由。