- 积分
- 26931
- 明经币
- 个
- 注册时间
- 2007-4-24
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2016-4-21 22:27:09
|
显示全部楼层
本帖最后由 gzxl 于 2016-4-21 22:31 编辑
馨馨 发表于 2016-4-21 21:56
能具体点说吗,如果有代码最好了,谢谢
按X最小或最大排序,用快速排序法(经典高效)
然后取第一个元素或最后一个元素就是想要的
VBA不太懂了,百度吧
这个是arx的- void SortPointsOnX(AcGePoint2dArray &points, int left, int right)
- {
- AcGePoint2d firtPt, lastPt;
- int rtemp, ltemp;
- ltemp = left;
- rtemp = right;
- firtPt = points[(left + right) / 2]; // 分界值
- while (ltemp < rtemp)
- {
- while (points[ltemp].x < firtPt.x)
- {
- ++ltemp;
- }
- while (points[rtemp].x > firtPt.x)
- {
- --rtemp;
- }
- if (ltemp <= rtemp)
- {
- lastPt = points[ltemp];
- points[ltemp] = points[rtemp];
- points[rtemp] = lastPt;
- --rtemp;
- ++ltemp;
- }
- }
- if (ltemp == rtemp)
- {
- ltemp++;
- }
- if (left < rtemp)
- {
- SortPointsOnX(points, left, ltemp - 1); // 递归调用
- }
- if (ltemp < right)
- {
- SortPointsOnX(points, rtemp + 1, right);
- }
- }
复制代码 |
评分
-
查看全部评分
|