CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

(急)关于自定义类型数组的排序问题

楼主Tenner(BE.Tenner)2000-10-04 11:14:00 在 VB / 基础类 提问

我有一个自定义类型:  
  Public   Type   TypeDef  
          a   As   String  
          b   As   String  
          c   As   String  
          d   As   String  
  End   Type  
  我还有一个能对任意数组(任何类型都行)进行排序的过程  
  请问如何能用这个排序程序把我的一个自定义类型的数组按照数组中   a   的顺序进行排序?要求b,c,d三个元素的顺序要随   a   的变化而变化。  
  如   ABC(1   To   3)   As   TypeDef  
  ABC(1).a="Z"  
  ABC(1).b="D"  
  ABC(1).c="S"  
   
  ABC(2).a="F"  
  ABC(2).b="Z"  
  ABC(2).c="A"  
   
  ABC(3).a="K"  
  ABC(3).b="D"  
  ABC(3).c="F"  
  排序后成为:  
  ABC(1).a="F"  
  ABC(1).b="Z"  
  ABC(1).c="A"  
   
  ABC(2).a="K"  
  ABC(2).b="D"  
  ABC(2).c="F"  
   
  ABC(3).a="Z"  
  ABC(3).b="D"  
  ABC(3).c="S" 问题点数:50、回复次数:3Top

1 楼edyang(化石)回复于 2000-10-04 15:22:00 得分 5

好像你要为结构数组排序专门写个排序函数,或者用   C/C++   写动态连接库来实现。Top

2 楼limengchen(LMC)回复于 2000-10-06 15:25:00 得分 45

我先将字符串转化为26进制的数字,再化成10进制,然后比较大小。下面是aru,kuh,amo的排序代码。  
  Private   Type   mine  
        a   As   String  
        b   As   String  
        c   As   String  
  End   Type  
   
  Private   Sub   Command1_Click()  
  Dim   state   As   Integer  
  Dim   abc(3)   As   mine  
  Dim   n(3),   na(3),   nb(3),   nc(3)   As   Single  
  state   =   0  
  abc(1).a   =   "a"  
  abc(1).b   =   "r"  
  abc(1).c   =   "u"  
  abc(2).a   =   "k"  
  abc(2).b   =   "u"  
  abc(2).c   =   "h"  
  abc(3).a   =   "a"  
  abc(3).b   =   "m"  
  abc(3).c   =   "o"  
  For   z   =   1   To   3  
          Select   Case   abc(z).a  
              Case   "a"  
                  na(z)   =   1  
              Case   "b"  
                  na(z)   =   2  
              Case   "c"  
                  na(z)   =   3  
              Case   "d"  
                  na(z)   =   4  
              Case   "e"  
                  na(z)   =   5  
              Case   "f"  
                  na(z)   =   6  
              Case   "g"  
                  na(z)   =   7  
              Case   "h"  
                  na(z)   =   8  
              Case   "i"  
                  na(z)   =   9  
              Case   "j"  
                  na(z)   =   10  
              Case   "k"  
                  na(z)   =   11  
              Case   "l"  
                  na(z)   =   12  
              Case   "m"  
                  na(z)   =   13  
              Case   "na"  
                  na(z)   =   14  
              Case   "o"  
                  na(z)   =   15  
              Case   "p"  
                  na(z)   =   16  
              Case   "q"  
                  na(z)   =   17  
              Case   "r"  
                  na(z)   =   18  
              Case   "s"  
                  na(z)   =   19  
              Case   "t"  
                  na(z)   =   20  
              Case   "u"  
                  na(z)   =   21  
              Case   "v"  
                  na(z)   =   22  
              Case   "w"  
                  na(z)   =   23  
              Case   "x"  
                  na(z)   =   24  
              Case   "y"  
                  na(z)   =   25  
              Case   "z"  
                  na(z)   =   26  
          End   Select  
          Select   Case   abc(z).b  
              Case   "a"  
                  nb(z)   =   1  
              Case   "b"  
                  nb(z)   =   2  
              Case   "c"  
                  nb(z)   =   3  
              Case   "d"  
                  nb(z)   =   4  
              Case   "e"  
                  nb(z)   =   5  
              Case   "f"  
                  nb(z)   =   6  
              Case   "g"  
                  nb(z)   =   7  
              Case   "h"  
                  nb(z)   =   8  
              Case   "i"  
                  nb(z)   =   9  
              Case   "j"  
                  nb(z)   =   10  
              Case   "k"  
                  nb(z)   =   11  
              Case   "l"  
                  nb(z)   =   12  
              Case   "m"  
                  nb(z)   =   13  
              Case   "nb"  
                  nb(z)   =   14  
              Case   "o"  
                  nb(z)   =   15  
              Case   "p"  
                  nb(z)   =   16  
              Case   "q"  
                  nb(z)   =   17  
              Case   "r"  
                  nb(z)   =   18  
              Case   "s"  
                  nb(z)   =   19  
              Case   "t"  
                  nb(z)   =   20  
              Case   "u"  
                  nb(z)   =   21  
              Case   "v"  
                  nb(z)   =   22  
              Case   "w"  
                  nb(z)   =   23  
              Case   "x"  
                  nb(z)   =   24  
              Case   "y"  
                  nb(z)   =   25  
              Case   "z"  
                  nb(z)   =   26  
          End   Select  
          Select   Case   abc(z).c  
              Case   "a"  
                  nc(z)   =   1  
              Case   "b"  
                  nc(z)   =   2  
              Case   "c"  
                  nc(z)   =   3  
              Case   "d"  
                  nc(z)   =   4  
              Case   "e"  
                  nc(z)   =   5  
              Case   "f"  
                  nc(z)   =   6  
              Case   "g"  
                  nc(z)   =   7  
              Case   "h"  
                  nc(z)   =   8  
              Case   "i"  
                  nc(z)   =   9  
              Case   "j"  
                  nc(z)   =   10  
              Case   "k"  
                  nc(z)   =   11  
              Case   "l"  
                  nc(z)   =   12  
              Case   "m"  
                  nc(z)   =   13  
              Case   "nc"  
                  nc(z)   =   14  
              Case   "o"  
                  nc(z)   =   15  
              Case   "p"  
                  nc(z)   =   16  
              Case   "q"  
                  nc(z)   =   17  
              Case   "r"  
                  nc(z)   =   18  
              Case   "s"  
                  nc(z)   =   19  
              Case   "t"  
                  nc(z)   =   20  
              Case   "u"  
                  nc(z)   =   21  
              Case   "v"  
                  nc(z)   =   22  
              Case   "w"  
                  nc(z)   =   23  
              Case   "x"  
                  nc(z)   =   24  
              Case   "y"  
                  nc(z)   =   25  
              Case   "z"  
                  nc(z)   =   26  
          End   Select  
          n(z)   =   na(z)   +   nb(z)   /   26   +   nc(z)   /   16   ^   2  
  Next   z  
  10   For   z   =   1   To   3  
                If   n(z)   <=   n(1)   And   n(z)   <=   n(2)   And   n(z)   <=   n(3)   And   n(z)   <>   1E+22   Then  
                      n(z)   =   1E+22  
                      Form1.Print   abc(z).a;   abc(z).b;   abc(z).c  
                      state   =   state   +   1  
                End   If  
        Next   z  
  If   state   <>   3   Then   GoTo   10  
  End   Sub  
  Top

3 楼Tenner(BE.Tenner)回复于 2000-10-06 17:34:00 得分 0

谢谢,我已经找到了更好的方法,我先将每个数组元素中的a,b,c按abc的顺序连成一个大字符串,再排序这个大字符串数组,再分离就可以了!Top

相关问题

  • 急!!自定义类型能不能做成数组呀??????
  • 自定义类型数组的问题!救急!
  • VC中自定义类型的数组的上限是多少?
  • 如何在自定义类型中实现动态数组
  • 求判断自定义类型动态数组是否为空的方法
  • 菜鸟一问:自定义类型的数组赋值问题[在线等]
  • 怎么把自定义的数据类型转到字节数组中以便用winsocket传送?
  • 如何将数据在自定义类型的变量和字节数组之间转换
  • 如何在vb中设置返回值为自定义类型数组的函数(250分)
  • winsock能传数组和自定义类型的数据吗?蛇蛋、qaymuic欢迎来啊!!

关键词

  • 排序
  • na
  • 数组
  • abc
  • case
  • 自定义类型
  • 字符串
  • 顺序
  • state
  • select

得分解答快速导航

  • 帖主:Tenner
  • edyang
  • limengchen

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo