在VBS中对数字数组进行排序

Sorting an array of numbers in VBS

我想在vbs中对数组进行排序,所以数组中包含的数字是升序的。我正在从文本文件中读取数字

    Sub Main()
Dim Werte(10)
Dim c  
Dim fso  
Set fso = CreateObject("Scripting.FileSystemObject")  
Set c = fso.Drives  
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("Y:\Benutzer\Desktop\Werte.txt",1)
Dim strLine
Dim i
i=0
do while not objFileToRead.AtEndOfStream
    strLine = objFileToRead.ReadLine()
    Werte(i)=strLine
    i=i+1
loop
objFileToRead.Close
Set objFileToRead = Nothing

for x=LBound(Werte) To UBound(Werte) - 1 Step 1
    for j= 0 to UBound(Werte)-1
        if Werte(j)>Werte(j+1) then
            temp=Werte(j+1)
            Werte(j+1)=Werte(j)
            Werte(j)=temp
        end if
    next
next 

PATH="Y:\Benutzer\Desktop\Werte_sortiert.txt"
Array_ToTextFile Werte,PATH
End Sub

Function Array_ToTextFile(a,path)  

    Const ForWriting = 2  

    Dim fso  

    Dim writer  

    Dim i  

    Set fso = CreateObject("Scripting.FileSystemObject")  

    Set writer = fso.OpenTextFile(path,ForWriting,True)  

    For i = lbound(a) to ubound(a)  
        writer.writeline a(i)  
    Next  

    writer.close  
End Function  
Main

文本文件如下所示:

10 9 8个 7 6个 5个 4个 3个 2个 1个 0

结果如下所示:

0 1个 10 2个 3个 4个 5个 6个 7 8个 9

数字10应该排在末尾,但排序后排在第3位。非常感谢您的帮助。

问题是您进行的是字符串比较而不是数字比较。如果您将第 21 行更改为:

    if Werte(j)>Werte(j+1) then

至:

    if Int(Werte(j))>Int(Werte(j+1)) then

它将正确排序。