对一个点集进行排序,需要首先确定序规则
一个比较方便的规则是: 顺序比较两个点的坐标值,如果一个点的坐标值比另一个点的相应坐标小,那么就说这个点比另一个点小。
比如,有P1(x1, y1) 和P2(x2,y2)两个点,顺序比较 x值和y值,如果x1<x2, 则P1<p2;如果x1>x2, 则P1>p2;如果x1=x2,继续比较y值,直到比较出大小为止。如果两点的坐标值都相等,则 规定 P1<p2。对于n维点也可以这样比较。
下面是粗略的C代码:
1 int isLess(float* p1, float* p2, int n) 2 { 3 int i; 4 for(i=0;i<n;p1++,p2++) 5 { 6 if(*p2>*p1) 7 return 1; 8 } 9 return 0; 10 } 11 12 int main() 13 { 14 float p1[]={1.1,2.3,4.1}; 15 float p2[]={1.1,2.4,4.1}; 16 printf("%d\n",isLess(p1,p2,3)); 17 return 0; 18 }