5.1 雇佣问题
问题:相当于找出无序数组中的最大值。
分析此算法也是计算基本操作执行的次数。
最坏情况分析
升序
概率分析
必须对输入的分布进行假设或者有此知识。
平均情况运行时间:对所有可能的输入产生的运行时间取平均值(考虑输入的分布)。
不能描述合理的输入分布时,无法使用此方法。
随机算法
一个算法的行为不仅由输入决定,也由随机数生成器产生的数值决定,则这个算法是随机的。
一个随机算法的运行时间是期望运行时间。
5.2 指示器随机变量
应聘者i比应聘者1到i-1更有资格的概率是1/i,这句的理解是,有一组数(i个),最大的数在最后一个位置上的概率是1/i。也就是:
Ai−1i−1/Aii=1/i
5.3 随机算法
确定的算法,对于任意给定输入,其执行过程都相同。
随机算法,每次运行这个算法时,执行依赖于随机选择,很可能每次执行时,和前一次算法的执行不同。
随机排列数组
方法一:为数组中每一个元素随机赋值一个优先级,在根据这个优先级重新排列数组。
均匀随机排列:等可能的产生每一种排列。
证明中,所有可能的排列有n!种,对一个特殊的排列可能出现的概率也是
1/n!
,则得证。
方法二:原址排列
元素i与i到n序号的元素交换。