快速选择澄清

时间:2017-12-14 00:26:25

标签: algorithm select quickselect

快速选择的演讲幻灯片中“ k ”究竟是什么意思?

enter image description here

1 个答案:

答案 0 :(得分:2)

假设你输了一个数字x

L为数组中小于x的数字集合,集合的大小为|L|

E成为数组中等于x的数字集合,集合的大小为|E|

G为数组中大于x的数字集合,集合的大小为|G|

让我们想象一下排序的数组,第一个|L|数字(1 -> |L|)包含在集L中。

以下|E|个数字(|L|+1 -> |L|+|E|)包含在E集中。

以下|G|个数字(|L|+|E|+1 -> end)包含在G集中。

我们正在寻找kth最小的数字,所以我们有3个案例:

1)k <= |L|这意味着我们要查找的数字位于排序数组中的前|L|个数字中,因此我们在{{1}中搜索kth个最小数字}}

2)L这意味着我们要查找的数字位于排序数组中|L| < k <= |L|+|E|之间的位置,因此它是来自(|L|+1 -> |L|+|E|)的元素。由于E的所有元素都等于E,因此我们知道x最小数等于kth

3)x这意味着我们要查找的数字位于排序数组中k > |L|+|E|之间的位置,因此它是来自'G'的元素。由于已有(|L|+|E|+1 -> end)个数字小于|L|+|E|最小数字,我们可以从kth中减去|L|+|E|,我们称之为kk' ),并在k' = k - |L| - |E|中搜索k'th最小元素。