繁体   English   中英

数组中第 K 个最小的元素

[英]Kth smallest element in an array

在此处输入图像描述

代码片段 function 查找数组中的第 k 个最小元素

{ 向量 ans(arr, arr+r+1);

排序(ans.begin(),ans.end());

返回答案[k-1]; }

我无法理解此代码的工作原理,请解释

显示的代码执行以下操作。

  1. 它定义了一个名为“ans”的std::vector类型的变量。 在 C++ 中,人们通常不使用 C 风格 arrays 而是更多所谓的容器,例如std::vectorstd::array 此类容器的功能集比普通 C 风格的 arrays 好得多

  2. 在 C++ 中,您可以使用所谓的“构造函数”,它可以用值初始化类。

  3. std::vector有许多构造函数,其中之一是范围构造函数 (5) 这会将一系列值(从区域的开头到区域的结尾)复制到向量中

  4. 因此,在您的情况下,C 样式数组中的 r+1 值将被复制到向量中。

  5. sort(ans.begin(), ans.end()); std::vector中的值将按升序排序。

  6. 由于对值进行了排序,因此最小值将位于开头。

  7. 警告。 CPP 中类数组类型的索引从索引 0 开始。因此您会看到k-1

示例:如果您想获得第 3 个较小的值,则 k=3。 并且索引为k-1的值,因此,2,将被访问

具有值为 5,4,3,2,1 的原始数组,排序后我们将有 1,2,3,4,5

Index:  0   Value 1
Index:  1   Value 2
Index:  2   Value 3
Index:  3   Value 4
Index:  4   Value 5

因此,选择索引 2 处的值,将为您提供预期的结果 3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM