相关问题:
The kth quantiles of an n-element set are the k 1 order statistics that divide the sorted set into k equal-sized sets (to within 1). Give an O.n lg k/-time algorithm to list the kth quantiles of a set.
对一个含有n个元素的集合来说,所谓k分位数(the kth quantile),就是能把已排序的集合分成k个大小相等的集合的k-1个顺序统计量。给出一个能输出某一集合的这k-1个顺序统计量的O(nlgk)时间的算法。
思考过程:
开始我的想法是,既然是已排序的集合,那么我就写一个循环for(i=n/k;i<n;i+=n/k) cout<<A[i]<<" " n/k代表k个集合中的每个集合大小为n/k个元素。每隔n/k个元素就输出一个数,这样循环k-1次就输出了k-1和顺序统计量也就是k分位数。这样时间复杂度就是O(k),显然比O(nlgk)小,但是题目又要求给出O(nlgk)的算法。我想这可能是翻译有误,”sorted“在这句话里翻译成“已排序”是否妥当?,如果改成原数组初始未排序。那么如果还按照刚才的算法,明显不能求出。然后我就想出另外一个超级简单的算法