您的位置:首页 > 其它

算法导论 第9章 中位数和顺序统计量

2018-03-26 14:36 288 查看

算法导论 第9章 中位数和顺序统计量

在一个由n个元素组成的集合中,第i个 顺序统计量 是指该集合中第i小的元素,如最小值是第1个顺序统计量。中位数 是它所属集合的中点元素,本书中都指下中位数,即i=(n+1)/2向下取整。

本章讨论 选择问题,即输出集合中第i小的元素。

最小值和最大值

若要确定一个n元素集合中的最小元素或最大元素,显然需要n-1次比较,即Θ(n)。

若要同时找到最小值和最大值,可以首先记录已知的最小值和最大值,然后对输入元素成对的相互比较,把较小的与当前最小值比较,较大的与当前最大值比较,这样总的比较次数至多是3 * (n / 2向下取整)。

期望为线性时间的选择算法

该算法以第7章快速排序算法为模型,但只处理划分的一边。首先讲集合划分为A[p…q-1]和A[q+1…r],使得A[p…q-1]中元素都小于或等于A[q],A[q+1…r]中元素都大于或等于A[q],然后计算A[p…q]的元素个数k,确定第i小的元素在哪一个集合中,并递归调用该方法直到取得第i小的元素:



其中:





可以证明,假设所有元素是互异的,在期望现性时间内,可以找到任一顺序统计量。

最坏情况为线性时间的选择算法

将输入的n个元素的数组划分n/5向下取整个组每组5个元素,和1组n mod 5个元素

对每一组进行插入排序,确定每组的中位数

对找到了n/5向上取整个中位数,递归调用该方法以找到中位数x

利用修改过的PARTITION(把划分的主元也作为输入参数)按中位数的中位数x进行划分,让k比划分的低区的元素多1,因此x是第k小的元素

若i=k则返回x,若i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: