Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 算法-查找数组的最佳元素_Arrays_Algorithm_Sorting_Median - Fatal编程技术网

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

Arrays 算法-查找数组的最佳元素,arrays,algorithm,sorting,median,Arrays,Algorithm,Sorting,Median,我有一个相互不同的元素数组(x_1,x_2,…,x_n)。每个元素都关联一个正值(w_1,w_2,…,w_n)。这些正值之和为1 我必须找到一个最佳元素(x_k),即: 及 我发现这个算法: 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

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

我必须找到一个最佳元素(x_k),即:

我发现这个算法:

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
proc元素(arr[]
上一页w:=0
nexts_w:=0
对于(i=0;i x_k

一个算法应该在O(n)时间内工作。你知道如何解决它吗?Thx提示

输入示例:

x|i|1;4;2;3;5
你可以使用:

  • 选择一个轴(随机选择是个好主意)
  • 根据它们的x坐标,跟踪放在其左侧的项的总和
  • 如果是≥ 1/2,递归到左侧。否则,递归到右侧

  • 这里的问题是,在最坏的情况下,运行时间是O(n²)。但是,它的平均值是O(n)(假设元素在某种程度上均匀分布)。还有其他与确定性线性时间相关的问题,您可能可以以类似的方式进行调整,但它们更复杂。

    这里有一个解决方案:这个问题似乎与主题无关,因为它与计算机科学有关,应该迁移到