我写了一维数组排序代码,但第一个值在排序后消失了。这是我的代码:
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
答案 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