我正在尝试设计一种算法来计算商品价格波动的波动程度。
我希望这种方式起作用的方式是,如果商品的价格不断上涨和下跌,那么它应该比商品价格逐渐上涨然后价格迅速下跌时得分更高。
这是我的意思的一个例子:
商品A:1 - > 2 - > 3 - > 2 - > 1 - > 3 - > 4 - > 2 - > 1
商品B:1 - > 2 - > 3 - > 4 - > 5 - > 6 - > 7 - > 8 - > 2
商品C:1 - > 2 - > 3 - > 4 - > 5 - > 4 - > 3 - > 2→ 1
商品A有一种“波浪”式的模式,因为它的价格会上涨而且会定期下跌。
商品B有一种“悬崖”式的模式,价格逐渐上涨然后急剧下跌。
商品C有一种“山丘”式的模式,价格逐渐上涨然后逐渐下降。
A应该获得最高排名,其次是C,然后是B.商品价格随波动模式越多,排名就越高。对于可以执行此操作的算法有任何建议吗?
谢谢!
答案 0 :(得分:1)
我的方法看起来像这样。
对于我的算法,我正在考虑上面的例子。
A: 1 -> 2 -> 3 -> 2 -> 1 -> 3 -> 4 -> 2 -> 1
B: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 2
C: 1 -> 2 -> 3 -> 4 -> 5 -> 4 -> 3 -> 2-> 1
现在我将压缩这些列表,通过压缩我的意思是取一个递增或递减序列的起始值和结束值。
因此,在压缩列表之后会看起来像这样。
A: 1 -> 3 -> 1 -> 4 -> 1
B: 1 -> 8 -> 2
C: 1 -> 5 -> 1
现在一旦完成它,我取i和i + 1元素之间的差异,然后取平均值,并根据平均值,我给他们排名。
所以i和i + 1元素之间的区别看起来像这样
2 2 3 3
A: 1 --> 3 --> 1 --> 4 --> 1
7 6
B: 1 --> 8 --> 2
4 4
C: 1 --> 5 --> 1
现在让我们总结这个差异并取平均值。
A: (2+2+3+3)/4 = 2.5
B: (7+6)/2 = 6.5
C: (4+4)/2 = 4
现在我们可以根据这个平均值
分配排名A < C < B
希望这有帮助!