算法导论7-3

读书笔记

为了使得算法对所有输入都能有较好的期望性能,所以我们在算法中引入了随机性

伪代码如下:

RANDOMIZED-PARTITION(A, p, r)
	i = RANDOM(p, r)
	exchange A[r] with A[i]
	return PARTITION(A, p, r)
	
RANDOMIZED-QUICKSORT(A, p, r)
	if p < r
		q = RANDOMIZED-PARTITION(A, p, r)
		RANDOMIZED-QUICKSORT(A, p q - 1)
		RANDOMIZED-QUICKSORT(A, q + 1, r)

这里的改动非常小,只是添加一个从随机算法中获得基准值的过程;

课后习题

7.3-1

为什么我们分析随机算法的期望时间,而不是其最坏时间呢?

因为并不是所有数据集都是最坏情况,在大多数情况下,数据集都处于不好不坏的情况,所以我们要分析算法的期望时间。

7.3-2

\(RANDOMIZED-QUICKSORT\)的运行过程中,在最坏情况下,随机生成器\(RANDOM\)被调用多少次?在最好情况下呢?以\(\theta\)符号的形式给出你的答案?

最好最坏情况调用次数是一致的为\(\theta(n)\)

posted @ 2021-01-15 10:47  ijkzen  阅读(106)  评论(0编辑  收藏  举报