在VB中排序1d数组

时间:2015-11-07 13:20:35

标签: arrays vba sorting

我写了一维数组排序代码,但第一个值在排序后消失了。这是我的代码:

For i = 0 To 10 - 1
    For j = 0 To (10 - 1) - i
        If Xs(j) > Xs(j + 1) Then
            tmp = Xs(j)
            Xs(j) = Xs(j + 1)
            Xs(j + 1) = tmp
        End If
    Next j 
Next i

原始阵列:

 0.995136318967065 
 1.92659411953677E-02 
 0.075211466386023 
 0.276865639306513 
 0.796949177428061 
 0.644136557566409 
 0.912439108707731 
 0.318021611061513 
 0.863316048056547 
 0.469710111256482 

排序后的数组:

 0 
 1.92659411953677E-02 
 0.075211466386023
 0.276865639306513 
 0.318021611061513 
 0.469710111256482 
 0.644136557566409 
 0.796949177428061 
 0.863316048056547 
 0.912439108707731

1 个答案:

答案 0 :(得分:0)

我怀疑你已经确定了数组0 To 10的尺寸:

Dim Xs(0 To 10)

所以在其中创建11个空格。但是,你只有10个,所以你将有一个 Empty 单元格,它将自己置于循环某个点的第一个位置(被评估为0,这确实是数据集中的最低值)。

我也相信你已经确定了数组0 To 10而不是0 To 9的尺寸,因为如果没有,你会在代码的这一部分得到Subscript out of range error

For j = 0 To (10 - 1) - i

为了使您的代码有效:

a)将Dim Xs(0 To 10)更改为Dim Xs(0 To 9)

b)将For j = 0 To (10 - 1) - i更改为For j = 0 To (10 - 1) - i-1