我正在开发一个项目,该项目将使用大型数据集(包括2D和3D),我将变成三角形或四面体,以便渲染它们。
我还将对这些tris / tets进行计算。每个计算使用哪个tris / tets取决于其顶点的最大值和最小值。
所以我需要按照它们最有价值的顶点排序tris / tets。
-
我尝试过quicksort和二进制插入排序。到目前为止,Quicksort提供了最快的解决方案,但由于数据集的大小,它仍然很慢。
在创建tris / tets时,我正在考虑一个桶/地图排序;为遇到的每个最大值顶点添加一个桶,添加指向三角形的指针,这些三角形都将该值作为其最大值顶点的值。
这种方法应该是线性的,但显然需要更多的内存。这不是问题,但我选择的编程语言是c。我并不完全确定如何编写这样的东西。
所以我的问题是,你将如何以这样的方式获得三角形/ tets,你可以迭代它们,从三角形中,其顶点具有3个顶点的最大值是最大值的顶点整个数据集,一直到具有最小最大顶点值的三角形? :)
答案 0 :(得分:0)
您是否只能在生成它们时将它们存储在binary search tree中?这将使它们保持有序且易于搜索(O(log(n))
用于插入和查找)
答案 1 :(得分:0)
您可以根据priority queue使用heap data structure。这也应该让你O(log(n))
进行插入和提取。