几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(VB.NET/C#) (http://www.dimcax.com/hust/forumdisplay.php?f=176)
-   -   【转帖】求助:关于三维点排序 - 精华帖集合 (http://www.dimcax.com/hust/showthread.php?t=14161)

yang686526 2009-04-29 05:38 PM

【转帖】求助:关于三维点排序 - 精华帖集合
 
求助:关于三维点排序 - 精华帖集合
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);
});


所有的时间均为北京时间。 现在的时间是 08:42 AM.