[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

vbs冒泡排序演示

  1. input = inputbox("请输入要排序的字符")
  2. Dim a, b, num, vbstr
  3. vbstr = " "
  4. For a=1 To Len(input)
  5.     num = 0:b = 1
  6.     For b = 1 To a
  7.         If Mid(input,a,1) >= Mid(vbstr,b,1) Then num = num+1
  8.     Next
  9.     vbstr = Mid(vbstr,1,num) & Mid(input,a,1) & Mid (vbstr,num+1,Len(vbstr)-num)
  10. Next
  11. MsgBox "排序前:" & input & vbCrLf & "排序后:" & Mid(vbstr,2,Len(vbstr)) , 0 , "运算结果如下"
复制代码
***共同提高***

回复 1楼 的帖子

版主不好意思,发现点问题
不能处理含有“0”的数据:比如90 32 19
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 2楼 的帖子

楼上是不是理解错了,一楼的vbs是按字符进行排序的,空格也是字符,"90 32 19"排序的结果是"  012399",如果要把空格视为分格符则要修改一楼的代码。。。
***共同提高***

TOP

啊,是这样啊。确实没看,不好意思
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

写这个写得快吐血了,代码兼容了数字和字符的排序,并考虑了重复字符的情况,用空格(全、半角)做为分隔
  1. Dim input, num()
  2. input = InputBox ("请输入,注意将要排序的字符用空格格开:")
  3. ReDim num(Len (input))
  4. Dim a, b:b = 0
  5. For a = 1 To Len (input)
  6.     flag = 0
  7.     If Mid (input, a, 1) <> " " And Mid (input, a, 1) <> " " Then
  8.       num(b) = num(b) & Mid (input, a, 1)
  9.     Else
  10.        If flag = 0 Then b = b+1:flag = 1   
  11.     End If
  12. Next
  13. Dim str():ReDim str(b)
  14. ReDim Preserve num(b):dim c, d:a = 1
  15. For a = 0 To b
  16.     c = 0:d = 0
  17.     For c = 0 To b
  18.         If IsNumeric (num(a)) = True And IsNumeric (num(c)) = True Then
  19.            If num(a) - num (c) > 0 Then d = d+1
  20.            Else
  21.            If num(a) > num(c) Then d = d+1
  22.         End If
  23.     Next
  24.     If str(d) = "" Then
  25.       str(d) = num(a)
  26.     Else
  27.       str(d) = str(d) & " " & num (a)
  28.     End If
  29. Next
  30. Dim vbstr:d = 0
  31. For d = 0 To b
  32.         vbstr = vbstr & " " & str(d)
  33. Next
  34. MsgBox "排序前:" & input & vbCrLf & "排序后:" & right (vbstr, Len(vbstr)-1) , 0 , "运算结果"
复制代码

[ 本帖最后由 batman 于 2011-3-13 23:00 编辑 ]
***共同提高***

TOP

索性再加个网页显示效果,呵呵。。。
  1. Dim input, num()
  2. input = InputBox ("请输入,注意将要排序的字符用空格格开:")
  3. ReDim num(Len (input))
  4. Dim a, b:b = 0
  5. For a = 1 To Len (input)
  6.     flag = 0
  7.     If Mid (input, a, 1) <> " " And Mid (input, a, 1) <> " " Then
  8.       num(b) = num(b) & Mid (input, a, 1)
  9.     Else
  10.        If flag = 0 Then b = b+1:flag = 1   
  11.     End If
  12. Next
  13. Dim str():ReDim str(b)
  14. ReDim Preserve num(b):dim c, d:a = 1
  15. For a = 0 To b
  16.     c = 0:d = 0
  17.     For c = 0 To b
  18.         If IsNumeric (num(a)) = True And IsNumeric (num(c)) = True Then
  19.            If num(a) - num (c) > 0 Then d = d+1
  20.            Else
  21.            If num(a) > num(c) Then d = d+1
  22.         End If
  23.     Next
  24.     If str(d) = "" Then
  25.       str(d) = num(a)
  26.     Else
  27.       str(d) = str(d) & " " & num (a)
  28.     End If
  29. Next
  30. Dim vbstr:d = 0
  31. For d = 0 To b
  32.     vbstr = vbstr & " " & str(d)
  33. Next
  34. Set ie = WScript.CreateObject("internetexplorer.application")
  35. With ie
  36. .Navigate "about:blank"
  37. .Width = 400
  38. .Height = 200
  39. With .Document.parentwindow
  40. .moveto (.Screen.AvailWidth-400)/2,(.Screen.AvailHeight-200)/2
  41. .Document.Write "<FONT face=楷体_GB2312 color=#FF9224 size=3><br>排序前:" & input & "<br>排序后:" & right(vbstr, len(vbstr)-1) & "</font></br><body bgcolor='#8020ff'></br>"
  42. .Document.title = "运算结果如下"
  43. End With
  44. .document.close
  45. .MenuBar = 0
  46. .ToolBar = 0
  47. .AddressBar = 0
  48. .StatusBar = 0
  49. .Visible = true
  50. .Resizable = 0
  51. End With
  52. WScript.Sleep 10000
  53. ie.Quit
  54. Set ie = nothing
复制代码

[ 本帖最后由 batman 于 2011-3-13 23:17 编辑 ]
1

评分人数

***共同提高***

TOP

话说论坛处理字符的能力怎么这么差,上面的代码我贴了n次才成功,总是会吃掉字符。。。
***共同提高***

TOP

回复 7楼 的帖子

十分有体会,但对于标注还是初学,不清楚其中的奥义。但是有意思的是和论谈的[CODE}很像(我想就是一种吧)
不过说实话,今天是VBS区发贴量最多的一天吧(我所看见的,目前:14)

[ 本帖最后由 wc726842270 于 2011-3-13 23:37 编辑 ]
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

返回列表