我有以下两个课程
public class PointClass
{
double x, y, z;
}
和
public class PolyLineClass
{
PointClass startPoint;
PointClass endPoint;
}
和 PolyLineClasses 数组
polyLineArray[];
假设如果我们以某种顺序连接 polyLineArray 中的所有线,我们将获得一条闭合的、非自相交的曲线。
例如
startPt endPt
polyLineArray[0]: (0,0,0) (1,0,0)
polyLineArray[1]: (0,1,0) (0,0,0)
polyLineArray[2]: (1,1,0) (0,1,0)
polyLineArray[3]: (1,0,0) (1,1,0)
如果我们以 0->3->2->1 的顺序遍历数组,我们会创建一个闭合曲线(在这个简单的例子中,一个正方形)。现在,我拥有的是以下算法:
1) int i = 0;
2) Get the endPt of polyLineArray[i];
3) search through the array for an element with index j such that
polyLineArray[i].endPoint == polyLineArray[j].startPoint.
4) i = j; Repeat from step2 until all elements in the array have been visited.
上面的算法是 O(scary)。有没有更有效的排序方式?如果语言确实很重要,我正在用 c# 编码。