[英]Kth smallest element in an array
代码片段 function 查找数组中的第 k 个最小元素
{ 向量 ans(arr, arr+r+1);
排序(ans.begin(),ans.end());
返回答案[k-1]; }
我无法理解此代码的工作原理,请解释
显示的代码执行以下操作。
它定义了一个名为“ans”的std::vector
类型的变量。 在 C++ 中,人们通常不使用 C 风格 arrays 而是更多所谓的容器,例如std::vector
或std::array
。 此类容器的功能集比普通 C 风格的 arrays 好得多
在 C++ 中,您可以使用所谓的“构造函数”,它可以用值初始化类。
std::vector
有许多构造函数,其中之一是范围构造函数 (5) 。 这会将一系列值(从区域的开头到区域的结尾)复制到向量中
因此,在您的情况下,C 样式数组中的 r+1 值将被复制到向量中。
用sort(ans.begin(), ans.end());
std::vector
中的值将按升序排序。
由于对值进行了排序,因此最小值将位于开头。
警告。 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.