[488,1082,2044,2504,3908,5330,3175,4982,7711,13436,12664,12930,12207,9114,9784,7649,2426,528,2131,4430,3410,5863,4925,5154,3806,3732,3394,4286,2725,4624,3916,2826,2910,3381,2407,3239,6737,7204,8848,7840,8293,5299,5448,3218,1759,1630,1804,469,375,310,400,1189,1766,996,3099,4043,2909,2414,3488,5457,4541,4302,4575,4364,2847,2682,3548,3843,3554,4524,4562,5158,5771,6756,6759,8957,5566,5494,7377,5618,4975,1767,354,397,839,0]如何找出数组中这三个波峰的值如下图
HighestArray-一维数组的最大值 求数组最大值?
最大值只能取到一个,要取三个波峰的最大值。或者有更多波峰,也要取各个波峰的最大值
先创建一个临时数组temp完全拷贝原始数组
然后对temp数组排序,降序
取前三个
完成
求前三不行的,可能取的值会最下面波峰中取三个值了,不是取三个波峰的最大值,如下图紫色处ABC是三个最大值
哦,你是要取三个阶段高点啊?
那这个就没办法了,这个涉及到图形识别。
你首先得自己敲定判断阶段高点的规则。
阶段怎么定义,高点怎么定义
然后才有后面的事情
那应该是想办法先分成3个组
感觉有点像zigzag公式和Pivot 函数的领域。
时间序列和截面数据的区别。
zigzag和pivot都是取转折点的算法,略有不同。关键就是看楼主想要什么算法。
但是无论什么算法,系统函数肯定是没有的。肯定要自己清楚需要用什么算法,然后自己编写