羊羊羊 发表于 2012-8-23 15:42:42

对三维数组进行排序,这段代码能否转化为vb.net的代码,急用!!!!

对三维数组进行排序,x相等时比较y的大小,y相等时比较z的大小,用到qsort函数。
c语言代码

#include<stdio.h>
#include<stdlib.h>
struct str
{
int x;
int y;
int z;
}a;
int cmp(const void *p,const void *q)
{
str *c=(str *)p;
str *d=(str *)q;
if(c->x!=d->x)
return c->x-d->x;
else if(c->y!=d->y)
return c->y-d->y;
else
return c->z-d->z;
}
int main()
{
int n, i, j, k, t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d %d %d",&a.x,&a.y,&a.z);
qsort(a,n,sizeof(a),cmp);
for(i=0;i<n;i++)
printf("%d %d %d\n",a.x,a.y,a.z);
return 0;
}


}

chmenf087 发表于 2012-9-1 00:07:21

本帖最后由 chmenf087 于 2012-9-1 01:09 编辑

缺函数qsort,不过觉得代码有问题

huaxiamengqing 发表于 2012-9-7 12:34:25

兄弟,你是在排序一列三维点,还是排序一个三维数组?如果是排序三维数组,麻烦你把排序的方式说清楚点,“x相等时比较y的大小,y相等时比较z的大小” 你这里说的x是什么?如果为索引值就没有排序之说,如果为数组存储的数值,指的是什么索引的值?

齐天大圣3386 发表于 2012-9-7 18:28:04

那是C语言的一段经典代码。

huaxiamengqing 发表于 2012-12-14 23:53:23

用linq,dim aa = from pt in ptlist orderby pt.x,pt.y,pt.z select pt

羊羊羊 发表于 2014-10-18 22:53:35

n = listPoint1.Count

            If n > 0 Then

                '根据数据分断方向标识,对界内特征点数据排序

                Select Case FXrect
                  Case "x"
                        Dim ptstmp = From pt In listPoint1 Select pt Order By pt.X, pt.Y
                        '//按x为主,y为辅的升序排列
                        listPoint1 = ptstmp.ToList()

                  Case "y"
                        Dim ptstmp = From pt In listPoint1 Select pt Order By pt.Y, pt.X
                        '//按y为主,x为辅的升序排列
                        listPoint1 = ptstmp.ToList()

                     End Select

         
                '添加界内特征点(剔除XY坐标相同点)进总特征点集

                For m = 0 To n - 1
                  If m = 0 Then
                        VerPoint.Add(listPoint1(m))
                  Else
                        If listPoint1(m).X <> listPoint1(m - 1).X Or listPoint1(m).Y <> listPoint1(m - 1).Y Then
                            VerPoint.Add(listPoint1(m))
                        End If
                  End If
                Next

                'listPoint1.Clear()

            End If

羊羊羊 发表于 2014-10-18 22:55:24

哪位大师帮我把这段代码优化下, 想提高计算速度

羊羊羊 发表于 2014-10-18 22:57:06

能否在排序的同时删除XY(不管Z)相同的点?
页: [1]
查看完整版本: 对三维数组进行排序,这段代码能否转化为vb.net的代码,急用!!!!