找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18264|回复: 4

[问题求助] 请问VBS如何用插入排序法给动态数组排序?

[复制链接]
发表于 2016-2-21 20:21:24 | 显示全部楼层 |阅读模式
我自己写了个代码,要么只显示一个值,要么什么都不显示,我知道这代码逻辑不对,但是我真的尽力了才来问别人,百度知道没人理,VBS吧歧视新人,思必达要钱,果壳虽然有一个人来但是一个人需要花N多天。声明常量:我不是伸手党,代码如下。
Option Explicit
Dim Arr()
Dim A,B,C
Dim j

B=InputBox("Now,Please writing B")'元素数

For A=0 To B'输入元素值
ReDim Arr(A)
Arr(A)= InputBox("Now,Please writing A as well")
Arr(A)= Int(Arr(A))
If IsNumeric(Arr(A))=True then'处理意外
Else
WScript.Quit  
End If
Next

B1'调用

For j=0 To B'结果
C=C&" "&Arr(B)
Next
WScript.Echo C
Function B1
Dim i,n,t

For i = 0 To B-1'排序
For n = i To B
If Arr(i) < Arr(n) Then
t = Arr(i)
Arr(i) = Arr(n)
Arr(n) = t
End If
Next
Next
End Function
发表于 2016-2-21 22:11:29 | 显示全部楼层
本帖最后由 ivor 于 2016-2-21 22:12 编辑
  1. For A=0 To B'输入元素值
  2. ReDim Arr(A)
复制代码
ReDim Arr(A)去掉,你犯了低级错误,Arr变成局部变量了

第二行要声明数组的大小
  1. Dim Arr(5)
复制代码
发表于 2016-2-21 22:17:11 | 显示全部楼层
本帖最后由 ivor 于 2016-2-22 18:47 编辑

回复 1# 793150834

差点没把我看吐了,错误的太多,我修改了一下,我VB不熟悉,凑活看吧

  1. Option Explicit
  2. Dim Arr(5) '必须声明数组大小
  3. Dim A,B,C
  4. Dim j

  5. B=InputBox("Now,Please writing B")' 元素数不能大于声明最大值

  6. For A=0 To B'输入元素值
  7.         Arr(A)= InputBox("Now,Please writing A as well")
  8.         Arr(A)= Int(Arr(A))
  9.         If IsNumeric(Arr(A))=True then'处理意外
  10.         Else
  11.         WScript.Quit  
  12.         End If
  13. Next

  14. B1'调用

  15. For j=0 To ubound(Arr)'        结果
  16.         C=C&" "&Arr(j)        '链接数组每个元素
  17. Next
  18. WScript.Echo "Arr数组:" & C

  19. Function B1
  20. Dim i,n

  21. '***********************************
  22. '不用第三个变量交换
  23. For i = 0 To ubound(Arr)'从大到小排序
  24.         For n = i To ubound(Arr)
  25.                 If Arr(i) < Arr(n) Then
  26.                         Arr(i) = Arr(i) + Arr(n)
  27.                         Arr(n) = Arr(i) - Arr(n)
  28.                         Arr(i) = Arr(i) - Arr(n)
  29.                 End If
  30.         Next
  31. Next
  32. End Function
复制代码
发表于 2016-2-22 02:37:04 | 显示全部楼层
思必达是垃圾站,那都是水军发的贴
发表于 2016-2-24 19:52:13 | 显示全部楼层
回复 2# ivor


    Dim Arr() 声明的是动态数组


------------------------------------------------------------


仔细看了下楼主的代码,有几个问题
Option Explicit
Dim Arr()
Dim A,B,C
Dim j

B=InputBox("Now,Please writing B")'元素数

For A=0 To B-1'输入元素值
        ReDim Preserve Arr(A+1)
        Arr(A)= InputBox("Now,Please writing A as well")
        Arr(A)= Int(Arr(A))
        If IsNumeric(Arr(A))=True then'处理意外
        Else
                WScript.Quit  
        End If
Next

B1'调用

For j=0 To B-1'结果
        C=C&" "&Arr(j)
Next

WScript.Echo C

Function B1
        Dim i,n,t
       
        For i = 0 To B-1'排序
                For n = i To B
                        If Arr(i) < Arr(n) Then
                                t = Arr(i)
                                Arr(i) = Arr(n)
                                Arr(n) = t
                        End If
                Next
        Next
End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 09:05 , Processed in 0.016929 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表