在一系列值中查找局部最大值

时间:2014-04-28 12:48:56

标签: arrays algorithm

我们可以使用什么算法在随机生成的长度为10的值数组中找到局部最大值?

我目前的策略是将数组分解为3并找到每个子集数组的最大元素,但不包括所有最大值。

Line graph

理想情况下,我希望第一个点也被识别为局部最大值,左边的第三个红点不应该被标记为。

2 个答案:

答案 0 :(得分:8)

只需浏览所有索引并将该元素与两侧的两个元素进行比较,跳过检查是否在边缘。

的伪代码:

for each index
  if     (index == 0              or array[index-1] < array[index])
     and (index == array.length-1 or array[index+1] < array[index])
  {
    store index
  }

答案 1 :(得分:2)

要查找本地最大值,通常可以使用hill climbing。另外,您可以通过应用simulated annealing来改善它,以避免在本地最大值停止而不是在它之后的最大值。