赞
踩
试证明,在最坏情况下,求n个元素组成的集合s中的第k小元素至少需要n+min(k,n- k+1)-2次比较。
问题分析:
(1)用序关系树描述整个比较过程
(2)用对手策略来构造一种比较策略,使得算法尽量多的多做比较,从而求解时间下限
对手策略的关键:
基于比较的算法中,可以通过三种方式确定某一元素与z的关系:
1、该元素与z比较,便可确定其与z的大小关系;
2、该元素比一个确定比z大的元素大,则该元素比z大;
3、该元素比一个确定比z小的元素小,则该元素比z小,这三种比较称为关键比较,由于集合中有n个元素,所以至少需要n-1次关键比较,才能确定集合中的第k小元素。(这和之前的有序关系树一致)
基于比较的算法过程中还剩余两种无用比较,即某一元素:
1、该元素比大于z的元素小;
2、该元素比小于z的元素大;
这两种情况我们无法确定该元素与z的关系,得不到有用信息,为非关键比较,为降低算法时间复杂度,减少比较次数,我们希望尽可能的多做关键比较,少做无用比较,而所谓对手策略,便是迫使我们尽量多做非关键比较,以获取尽量大的T(A,I’),即最坏情况。在算法执行的任何阶段,集合中的元素有以下三种状态:
1、L——该元素的值已确定大于z
2、S——该元素的值已确定小于z
3、N——该元素的值不确定
每当算法做两个元素x和y的比较时,对手策略根据x和y的状态,按照下表确定状态为N的元素的值
即 n+min(k,n-k+1)-2 次比较
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。