算法导论(四)之统计算法

版权声明:欢迎大家转载,指正。 https://blog.csdn.net/yin__ren/article/details/83239974

一、求最大最小值

1. 求最小值

Minimum(A)
	min ← A[1]
	for i = 2..n
	do if A[ i ] < min
		then min ← A[ i ]
	return min

2. 同时求最大最小值

Min-Max(A)
	for i = 1..n / 2
	do if A[2i – 1] ≤ A[2i]
		then B[i] ← A[2i – 1]
		C[i] ← A[2i]
	else B[i] ← A[2i]
		C[i] ← A[2i – 1]
	min ← Minimum(B)
	max ← Maximum(C)
	return (min, max)

二、随机选择算法

1. 伪代码

//返回数组中第 i 小的元素
RANDOMIZED-SELECT(A, p, r, i )
	if p == r
		then return A[p]
	q ←RANDOMIZED-PARTITION(A, p, r)//随机快速排序中的算法
	k ← q - p + 1 (分割中心所在位置)
	if i == k //pivot value is the answer
		then return A[q]
	elseif i < k
		then return RANDOMIZED-SELECT(A, p, q-1, i )
	else return RANDOMIZED-SELECT(A, q + 1, r, i-k)

2. 时间复杂度

T ( n ) = θ ( n ) T(n) = \theta(n)

猜你喜欢

转载自blog.csdn.net/yin__ren/article/details/83239974