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


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

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

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/18 8:03:00 [只看该作者]

呵呵,lxl版主的解法比较规范和专业,我来个比较无赖的解法:

 

Dim s1() As String = "2,6,3,8,4,9,1,7,5,10,21".Split(",")
Dim s2(s1.Length - 1) As Integer
For i As Integer = 1 To  s1.Length  - 1
    s2(i) =s1(i)
Next
Array.Sort(s2)
For i As Integer = 1 To s2.Length  - 1
    Output.Show(s2(i))
Next

 


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/8/18 10:22:00 [只看该作者]

谢lxl

谢老六


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


加好友 发短信
等级:狐精 帖子:3313 积分:23140 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/8/18 10:27:00 [只看该作者]

以下是引用lxl在2010-8-17 23:40:00的发言:

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编辑过]

 建议加入帮助!

[此贴子已经被作者于2010-8-18 10:28:18编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/18 12:15:00 [只看该作者]

总结:::::::::::::::;

 

'第一、***字符型
Dim s1() As String = "你觉得,大家好,狐表,怎么样".Split(",")
Array.Sort(s1)
Output.show("结果   :" & String.Join(",",s1))    结果   :大家好,狐表,你觉得,怎么样

 

'第二、***数字排序用 (1) lxl版主的:::::::::够专业

全局变量加上如下代码:
Public Function StrCompare(ByVal x As String, ByVal y As String) As Integer
Dim a As Single = x
Dim b As Single = y         '注意这个Single,也可以解决小数的问题。
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))

 
     '***数字排序用 (2)  狐狸爸爸的:::::::::其实这个对初学者更适用
Dim s1() As String = "2,6,4.01,10.11,2.2,20,3,8,20.33,4,9,1,7,5,10,21".Split(",")
Dim s2(s1.Length - 1) As Single          '注意这个Single,也可以解决小数的问题。
For i As Integer = 0 To  s1.Length  - 1
    s2(i) =s1(i)

Next
Array.Sort(s2)
Dim ss As String
For i As Integer = 0 To s2.Length  - 1
ss = ss & s2(i) & ","
Next
Output.Show(ss.trim(","))   '结果: 1,2,2.2,3,4,4.01,5,6,7,8,9,10,10.11,20,20.33,21


 

      '***数字排序 (3) 千万别用我的::::::还不知道有没有什么问题???
Dim s As String = "2,6,3,8,11,4,9,11.2,1,7,5,0.8,10,8.2,2.3,0.1,6.3,10.1"
Dim s0 As String  = ","
Dim s1,s2 As String               

Dim s9 As String  = ","
For i As Integer = 0 To s.split(",").length-1
    s1 = s.split(",")(i)
    s2 = s.split(",")(i)
    For ii As Integer = 0 To s.split(",").length-1
        If s0.contains("," & s.split(",")(ii)) = False
            If val(s1) >= val(s.split(",")(ii))

                s1 = s.split(",")(ii)
            End If    
        End If
        If s9.contains("," & s.split(",")(ii) & ",") = False
            If val(s2) < val(s.split(",")(ii))

                s2 = s.split(",")(ii)
            End If
        End If
    Next
    If s0.contains("," & s1 & ",")  = False
        s0 = s0 & s1 & ","
    End If
    If s9.contains("," & s2 & ",") = False
        s9 = "," & s2 & s9
    End If
Next

Dim ss As String = s9
For h As Integer = 0 To s0.trim(",").split(",").length-1
    For h1 As Integer = 0 To s9.trim(",").split(",").length-1
        If s0.trim(",").split(",")(h) = s9.trim(",").split(",")(h1)

            ss = ss.replace("," & s0.trim(",").split(",")(h) & ",",",")   
        End If
    Next
Next

s1 = s0.trim(",") & "," & ss.trim(",")
output.show("最后结果:   " & s1)     

'最后结果:   0.1,0.8,1,2,2.3,3,4,5,6,6.3,7,8,8.2,9,10,10.1,11,11.2     晕死大家了,不好意思啊~

[此贴子已经被作者于2010-8-18 12:17:00编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/18 21:27:00 [只看该作者]

给 2楼、7楼、11楼 各一个大精华 ······呵呵。。。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/19 10:06:00 [只看该作者]

呵呵,看了你自己写的代码,我觉得我必须重新写一个来开导你一下。

下面的排序不需要专业知识,也不需要借助数组的Sort方法排序,只用了一个简单的比较:

 

Dim s() As String = "2,6,3,8,4,9,1,7,5,10,21".Split(",")
Dim
cnt As Integer = s.Length
For
n As Integer = 0 To cnt - 1
    For
m As Integer = cnt - 1 To n + 1 Step - 1
        Dim
v1 As Double = s(m - 1)
        Dim
v2 As Double = s(m)
        If
v2 < v1 Then
            s
(m - 1) = v2
            s(m) = v1

        End If
    Next
Next

Output.show(
String.Join(",",s))

[此贴子已经被作者于2010-8-19 10:11:08编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/19 10:29:00 [只看该作者]

您老人家真细心啊,  我是想到哪,代码写到哪, 本想抽个时间整理精简的, 当然,是没办法达到您上面的精简程度的, 毕竟功底不够, 呵呵 ,   多谢您了.    您16楼的又是一个大精华啦~

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/19 10:46:00 [只看该作者]

孰能生巧,我只是比你多写了10多年的代码而已。

 

图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | 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来说没多少用,都被别人写好了。

 


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/19 11:22:00 [只看该作者]

以下是引用lxl在2010-8-19 10:48:00的发言:

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

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

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

 

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

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

 

真是之前已有那么多前辈的精华啊~   刚看了一下网上的介绍,  晕啊~~~~~

 

其实,就16楼代码,我是没弄懂 s 和 s()  的关系(就是字符串和数组/集合), 看了16楼的代码发现: 每执行一次变量n ,  String.Join后的 s 的排序就变化一次. 这很奇妙 .........

 

还有 {"中国","上海","浦东"}  居然等于  "中国,上海,浦东".split(",")    总之,咱底子薄(没啥基础) , 也没时间琢磨, 呵呵 懒啊~ 


 回到顶部
总数 21 上一页 1 2 3 下一页