QuickSelect可以在具有重复值的数组中找到最小的元素吗?

时间:2018-11-10 09:35:38

标签: algorithm sorting big-o quickselect

QuickSelect算法可以使用重复值吗?

如果我没有阵列

int[] array = {9, 8, 7, 6, 6, 6, 5, 0, 1, 2, 3, 4, 5, 5, 7, 200};

即使有重复项,也能够获得第k个最小的元素吗?

1 个答案:

答案 0 :(得分:1)

是的,它有效。到每次迭代结束时,所有少于当前枢轴的元素都存储在枢轴的左侧。

让我们考虑所有元素都相同的情况。在这种情况下,每次迭代最终都会将枢轴元素放在数组的左侧。下一次迭代将继续使用一个元素较短的数组。因此,我们需要进行k次迭代才能找到第k个最小元素。