比较三维项目列表的最佳算法是什么?

时间:2016-12-17 00:58:56

标签: algorithm sorting

我有一个项目列表,每个项目有三个属性(高度,宽度和深度) 我需要比较这些项目,我写了这个伪代码算法:

For i =0 to List[].Count  
    For m=i+1 to List[].Count
            If List(i). Height =List(m). Height then
                 If List(i).width=List(m).width &
                 List[i].depth != List[m].depth then
                     Result_List[].Add(List[i])

                  End if
            End if
   End for
End for

有没有更好的算法来完成同样的工作?
如果您能为建议的算法提供一些分析,我将非常感激。

2 个答案:

答案 0 :(得分:0)

我认为这种方法没有错误

除非您对可以将数据“分区”为“相同宽度,深度,高度的框”的其他数据结构持开放态度,否则您可以通过移动首先比较哪些条件进行微观优化。您只希望在深度不相等时继续,所以首先进行比较。

results = List[]

for i -> 0 .. len(elements)
  for j -> i+1 .. len(elements)
    if elements[i].depth != elements[j].depth
      if elements[i].width = elements[j].width & elements[i].height = elements[j].height
        results.add(elements[i])

return results

答案 1 :(得分:-2)

你做的O(n)扫描很难被击败,除非你有大量的元素+,否则它就足够了。

如果您尝试使用x,y,z进行更多操作,例如搜索等,那么您应该使用八叉树结构,因为它比列表更有效。