算法 - 查找数组的最佳元素

时间:2014-03-14 13:51:38

标签: arrays algorithm sorting median

我有一组相互不同的元素(x_1,x_2,...,x_n)。每个元素都有一个正值(w_1,w_2,...,w_n)。这些正值的总和为1。

condition1

我必须找到一个Optimal元素(x_k),它是:

condition2

condition3

我找到了这个算法:

proc OptimalElement(arr[])
 prevs_w := 0
 nexts_w := 0

 for (i = 0; i <= n; i++)
 {
   wi := arr[i].w

   nexts_w := 1 - prevs_w - wi

   IF (prevs_w < 0,5 && nexts_w <= 0,5) THEN
     return arr[i]
   ELSE
     prevs_w := prevs_w + wi
   ENDIF
 }
end

但是该算法仅比较索引为i&lt; k和i&gt; ķ。但是我需要算法来计算x_i&lt;的项目总和。 x_k和x_i&gt; X_K。

算法应该有O(n)时间。你知道怎么解决吗? Thx for tips。

输入示例:

x_i | 1; 4; 2; 3; 5
w_i | 0,1; 0,2; 0,3; 0,2; 0,2

1 个答案:

答案 0 :(得分:3)