我相信代码试图生成一个数组,选择峰值并显示趋势,但不确定。
array[N] # array of N integers, indexed 0 to N-1;
# assume it’s populated with
[1,4,2,-2,-9,10,2,12,2,-4,-4,-4,-4,2,6,7]
peak = array[0]
index = 0
output = [] # array of tuples
For x in 1..N-1
if (array[x]*array[x-1] > 0)
if peak < 0 and array[x] < peak
peak = array[x]
index = x
if peak >= 0 and array[x] > peak
peak = array[x]
index = x
else
output.insert( (index, peak) )
peak = array[x]
index = x
end if
end for
return output发布于 2020-03-12 05:47:37
看起来,代码是在正弦波中找到所有(正的峰值+下降的正值)和(负的峰值+上升的负值),并保持不变的值。
如果从给定的数组中画出正弦波,并看到输出
Output: [(1, 4), (2, 2), (4, -9), (7, 12), (8, 2), (10, -4), (11, -4), (12, -4)]我们可以看到第一个峰值(4),然后是下降正,然后是负峰值( -9),然后是负峰值(-9),然后是下一个正峰值(12),因为没有负上升值(可以通过插入负数>-9来检验),然后是2,呈下降阳性,以此类推。
希望这能有所帮助!
发布于 2022-09-03 20:51:48
按伪码计算的当前索引和峰值
index = 0,1,2,3,4,6,7,8,10,11,12,14,15
peak = 1,4,2,-2,-9,2,12,2,-4,-4,-4,6,7峰不是产生正弦波,因为10是缺失的peek,但如果我们可以消除(arrayx*arrayx-1 > 0)条件,那么我们就可以有正弦波和适当的尖峰,伪码将对输出有意义。
[(1, 4), (2, 2), (4, -9), (5, 10), (7, 12), (8, 2), (9, -4), (10, -4), (11, -4), (12, -4)]https://stackoverflow.com/questions/60647629
复制相似问题