求助:关于三维点排序 - 精华帖集合
www.dimcax.com
求助:关于三维点排序
有一个三维点集,要将里面的三维点首先按x从小到大排序,若x相同,则按y从小到大排序,如果x,y均相同,则还 z从小到大排序,请大家帮帮忙,有源码最好了,小弟查了很久,没有解决,
比较简单的排序方法嘛,,任何一本讲语言基础的书都会有,,可以参考起泡法排序的代码,google一下拉,无非也就是比它多了两个条件嘛
cloudlove
这问题让我怀念起lisp来了,visual lisp做这个很拿手。
不过.net也不弱呀,把那些点变成array,然后用array.sort(t)(t[], comparison(t)) 处理一下应该就可以了,排序算法这种很成熟的东西,何必自己写呢
list<point3d> pts=new list<point3d>;
pts.sort(delegate(point3d pt1,point3d pt2){return pt1.x.compareto(pt2.x);});//按x从小到大排序
再比较x相同的,按y排序。。。
list<point3d> pts = new list<point3d>();
pts.add(new point3d(5, 0, 0));
pts.add(new point3d(1, 1, 2));
pts.add(new point3d(1, 2, 3));
pts.add(new point3d(2, 2, 0));
pts.sort(
delegate(point3d p1, point3d p2)
{
return (p1.x == p2.x) ? ((p1.y == p2.y) ? p1.z.compareto(p2.z) : p1.y.compareto(p2.y)) : p1.x.compareto(p2.x);
});