您好我正在尝试了解中位数算法的中位数是如何工作的。在我所见到的所有例子中,到目前为止,在算法开始执行之前,已经有数组被划分。所以我无法理解这些小组是如何制作的。更具体地说,到目前为止所研究的例子中,有9组每组5个数字,例如又名45个数字,或4组10个数字,也就是40个数字。那么如果我们有n个数字呢?我应该遵循哪些好的技术来查找其组应该具有的元素数量?
答案 0 :(得分:1)
MoM是一种递归算法。它作为为快速排序或快速选择等算法选择“枢轴”的合理方式而存在。因此,它需要在一定的时间范围内运作。
如果将其解释为基本案例和递归案例,可能会更容易理解。
基本情况足够清楚。如果列表中的元素少于五个,那么你会发现天真的中位数。
但是,如果您的列表至少包含五个元素,则可以应用递归案例。您将从大列表中连续获取五个元素的组,找到它们的中位数,并将其添加到较小的列表中。 (如果剩下一些,你可以忽略它们。)
如果这个新的较小的列表足够小,您可以应用基本案例,如上所述。否则,您将通过“小”列表创建另一个更小的列表。泡沫,冲洗,重复,直至剩下少于五个元素。这是你对整体中位数的估计。所以它适用于任何大小的列表。
那么“五”应该有多大?嗯,事实证明5是最佳的。有人在维基百科页面上展示了该主题的复杂性分析。从本质上讲,较大的“五”值可以让您更好地逼近中位数,但需要花费更多的工作才能找到“五”的中位数。不幸的是,3每次迭代都不会减少足够的搜索空间,无法选择“五”。它通常需要是奇数,除非你想花费周期来分割元素之间的差异。