标题: [问题求助] 请问VBS如何用插入排序法给动态数组排序? [打印本页]
作者: 793150834 时间: 2016-2-21 20:21 标题: 请问VBS如何用插入排序法给动态数组排序?
我自己写了个代码,要么只显示一个值,要么什么都不显示,我知道这代码逻辑不对,但是我真的尽力了才来问别人,百度知道没人理,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
作者: ivor 时间: 2016-2-21 22:11
本帖最后由 ivor 于 2016-2-21 22:12 编辑
- For A=0 To B'输入元素值
- ReDim Arr(A)
复制代码
ReDim Arr(A)去掉,你犯了低级错误,Arr变成局部变量了
第二行要声明数组的大小复制代码
作者: ivor 时间: 2016-2-21 22:17
本帖最后由 ivor 于 2016-2-22 18:47 编辑
回复 1# 793150834
差点没把我看吐了,错误的太多,我修改了一下,我VB不熟悉,凑活看吧- Option Explicit
- Dim Arr(5) '必须声明数组大小
- Dim A,B,C
- Dim j
-
- B=InputBox("Now,Please writing B")' 元素数不能大于声明最大值
-
- For A=0 To B'输入元素值
- 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 ubound(Arr)' 结果
- C=C&" "&Arr(j) '链接数组每个元素
- Next
- WScript.Echo "Arr数组:" & C
-
- Function B1
- Dim i,n
-
- '***********************************
- '不用第三个变量交换
- For i = 0 To ubound(Arr)'从大到小排序
- For n = i To ubound(Arr)
- If Arr(i) < Arr(n) Then
- Arr(i) = Arr(i) + Arr(n)
- Arr(n) = Arr(i) - Arr(n)
- Arr(i) = Arr(i) - Arr(n)
- End If
- Next
- Next
- End Function
复制代码
作者: CrLf 时间: 2016-2-22 02:37
思必达是垃圾站,那都是水军发的贴
作者: CrLf 时间: 2016-2-24 19:52
回复 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
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |