第k个最大/最小元素是什么意思?

时间:2019-07-25 19:47:42

标签: algorithm

我目前正在研究选择算法,即中位数的中位数。

我遇到了以下两个句子:

  

在计算机科学中,选择算法是用于查找的算法   列表或数组中的第k个最小数字

     

在计算机科学中,中位数的中位数为近似值(中位数)   选择算法,通常用于为   精确选择算法,主要是快速选择算法,用于选择   最初未排序数组的第k大元素

第k个最小/最大元素是什么意思? 为了使问题更具体,请考虑以下(未排序的)数组:

[19, 1, 7, 20, 8, 10, 19, 24, 23, 6]

例如,什么是第五个最小元素?第五大元素是什么?

1 个答案:

答案 0 :(得分:4)

如果从最小到最大对数组进行排序,则第 k 个最小元素是排序后的数组中的第 k 个元素。第 k 个最大元素是排序数组中从末尾开始的第 k 个元素。让我们检查一下Python中的示例数组:

In [2]: sorted([19, 1, 7, 20, 8, 10, 19, 24, 23, 6])
Out[2]: [1, 6, 7, 8, 10, 19, 19, 20, 23, 24]

最小的元素是1,第二个最小的元素是6,依此类推。因此,第 k 个最小元素是从左起第 k 个元素。类似地,24是最大的元素,23是第二大的元素,依此类推,因此第 k 个最大元素是从右起第 k 个元素。因此,如果 k = 5

In [3]: sorted([19, 1, 7, 20, 8, 10, 19, 24, 23, 6])[4]  # index 4 is 5th from the start
Out[3]: 10

In [4]: sorted([19, 1, 7, 20, 8, 10, 19, 24, 23, 6])[-5] # index -5 is 5th from the end
Out[4]: 19

请注意,您没有必须对数组进行排序以获取第 k 个最小/最大的值。排序只是查看哪个值对应 k 的简单方法。