当前位置: 首页 > 知识库问答 >
问题:

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

东方震博
2023-03-14

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

我遇到了下面两个句子:

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

在计算机科学中,中位数是一种近似(中位数)选择算法,经常用于为精确选择算法(主要是quickselect)提供良好的中枢,该算法选择最初未排序数组的第k个最大元素。

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

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

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

共有1个答案

柯乐童
2023-03-14

如果按从小到大的顺序对数组进行排序,则第 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。

 类似资料:
  • 为了好玩/Java实践,我做了以下问题: 编写一个方法,该方法将整数的优先级队列作为输入,并输出最小整数。该方法不应更改传入的优先级队列的内部状态。您只能使用一个队列或堆栈作为额外数据。不允许使用其他数据结构<代码>k为1索引(表示最小值)。 获取元素很简单:只需删除次,因为它是优先级队列。我想我可以弹出,将元素放在堆栈上进行存储,然后在完成后将它们添加回队列。不过这不起作用,因为元素在优先级队列

  • 这是一个面试问题。 在具有排序行和列的矩阵中找到Kth最小元素。 Kth最小元素是中的一个,例如,这是否正确?

  • 我的问题是受到这个特殊的SO评论的启发,这个评论没有得到回答(我自己也面临这个问题): 我试图找到排序矩阵中第K个最小的元素: 给定一个nxn矩阵,其中每个行和列都按升序排序,返回矩阵中第k个最小的元素 请注意,它是排序顺序中的第k个最小元素,而不是第k个独立元素 输入:矩阵=[[1,5,9],[10,11,13],[12,13,15],[12,13,15],k=8 输出:13 说明:矩阵中的元素

  • 我实现了c程序,可以找到矩阵的元素:行的最大元素,同时列的最小元素,或行的-min元素,同时列的最大元素。例如,我们有数据。包含以下内容的txt文件: 4 7 8 9 10 6 5 4 11 5 0 1 12 4 2 7 13- 其中4是n-矩阵大小(4x4),7和10是这些数字。 下面是代码: 问题:我想知道我的代码是不是“脏”代码?因为我总是渴望让一切变得如此困难,只要有可能让它变得容易。是否

  • 所以我正在研究一个Leetcode问题,我的代码在某些情况下有效,但在某些情况下失败。 问题是: 给定一个矩阵,其中每个行和列都按升序排序,找出矩阵中第k个最小的元素。 请注意,它是排序顺序中的第k个最小元素,而不是第k个独立元素。 例子: 返回: 13 我的方法是使用minHeap,即使它声明数组已经排序,我仍然需要确保我已经将它从最小值排序到最大值。 这是我的代码: 以下是我的意见: 以下是输

  • 这可能是微软的面试问题。 从排序的数组中找出第k个最小的元素(忽略重复项) [编辑]:数组可能包含重复项(未指定)。 想了很多次,但仍然质疑自己:还有更好的解决方案吗? 取最大堆 时间复杂度:O(NlogK) 空间复杂度:O(K) 这些元素可能是重复的。所以,通过与以前的元素进行比较来检查是否有唯一的元素 还可以使用改进版的快速排序分区算法。但它可能会导致最坏的情况,因为数组已经排序<这里出现了两