C++ 代码计算数组的局部极值

2025年3月22日 | 阅读4分钟

极值是指最小值或最大值。换句话说,它指的是一个比其两个相邻值都大或都小的值或元素。假设数组 A 中有 n 个元素。当且仅当 A[i] 严格小于其两个相邻值时,它才是局部最小值。如果它严格大于其相邻值,则也会达到局部最大值。由于它们只有一个相邻值,A[0]A[n-1] 既不是最大值也不是最小值。我们必须确定给定数组中的局部极值数量。

示例

方法一:使用 For 循环

我们将使用 for 循环遍历数组中的元素,从第二个元素开始到倒数第二个元素结束。这可以防止第一个和最后一个元素成为极值。我们将使用 for 循环和 if 语句来判断每个元素是否大于或小于其两个相邻元素。任一条件满足都会使变量 num 增加一次。

示例

输出

Number of local extrema in the array: 3

方法二:C++ 标准模板库

在此方法中,我们可以利用 STL(标准模板库)算法的最大值和最小值操作。预定义函数 std::max()std::min() 用于返回给定数组范围内的最大和最小元素。

语法

它具有以下语法:

参数

  • First: 元素范围的起始点是其位置。
  • Last: 元素范围的结束位置是末尾。

对于 std::max({element 1, element 2, element 3}): 当前元素及其两个相邻元素是我们必须同时考虑的三个元素,以便找到局部极值。因此,我们的范围中有三个元素。正因为如此,我们使用花括号来指定这三个项目。

在这里,我们从给定数组的第二个元素重复循环到最后一个元素。在 x[i - 1]、x[i] 和 x[i + 1] 中,我们确定最大和最小元素。如果当前元素等于这两个元素中的任何一个,则计数器加一。

示例

让我们以一个例子来计算 C++ 中给定数组的局部极值。

输出

Number of local extrema in the array: 2

结论

总之,我们讨论了在数组中查找局部极值的各种方法。在第一种方法中,我们了解了使用 for 循环的基本迭代方法。在第二种方法中,我们利用了 std::min() 和 std::max() 函数。


下一个主题Hypercube-sort-in-cpp