Foxtable(狐表)用户栏目专家坐堂 → 出个题目 反正我这一下子是没解决.【解决了】


  共有15633人关注过本帖树形打印复制链接

主题:出个题目 反正我这一下子是没解决.【解决了】

帅哥哟,离线,有人找我吗?
lxl
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/8/17 23:40:00 [显示全部帖子]

以下是引用czy在2010-8-17 20:28:00的发言:

 

有10以上数据就不灵验了,如果能按数值大小来排序就好了。

C#支持匿名方法,所以写起来代码比较省事

 

VB 必须显示定义一个比较方法。

而在foxtable里面 自定义的方法只能放在全局变量,所以只能这样

全局变量加上如下代码:

    Public Function StrCompare(ByVal x As String, ByVal y As String) As Integer
        Dim a As Integer = x
        Dim b As Integer = y
        Return a.CompareTo(b)
    End Function

然后命令窗口执行:

        Dim s1() As String = "2,6,3,11,8,4,9,1,7,5,10".Split(",")
        Array.Sort(s1, AddressOf StrCompare)
        Output.show(String.Join(",", s1))

[此贴子已经被作者于2010-8-17 23:41:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/8/17 23:56:00 [显示全部帖子]

以下是引用e-png在2010-8-17 23:52:00的发言:

这是个怪题,挺难

lxl 版主:

Dim s1() As String = "10.1,11.1,10.3,2,6,3,11,8,4,9,1,7,5,10".Split(",")
Array.Sort(s1, AddressOf StrCompare)
Output.show(String.Join(",", s1))

结果为:1,2,3,4,5,6,7,8,9,10.3,10.1,10,11.1,11

小数到整数前面去了。

呵呵

只考虑整数了

        Dim a As Integer = x
        Dim b As Integer = y

换成

        Dim a As Single =  x
        Dim b As Single = y

就可以了

 

原来的比较方式 把11.1  11.3都强行转换成整数11去比较了


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/8/19 10:48:00 [显示全部帖子]

以下是引用mr725在2010-8-19 10:29:00的发言:
您老人家真细心啊,  我是想到哪,代码写到哪, 本想抽个时间整理精简的, 当然,是没办法达到您上面的精简程度的, 毕竟功底不够, 呵呵 ,   多谢您了.    您16楼的又是一个大精华啦~

呵呵,你能精简成16楼那样的话,就相当于你独立的研究出了冒泡排序

排序算法除了冒泡法,还有很多、很多其他排序方式

Array.Sort 封装的是快速排序算法

 

感兴趣的话可以网上搜索一下。

不过算法对于.net来说没多少用,都被别人写好了。

 


 回到顶部