冒泡排序和IndexOutOfRangeException

时间:2014-08-29 07:44:30

标签: .net vb.net bubble-sort indexoutofrangeexception

我正在尝试实施BubbleSort。但是,我得到一个数组越界错误;这发生在第三行。有人可以向我解释出现了什么问题吗?

For i As Integer = 0 To marks.Length Step 1
    For x As Integer = 0 To marks.Length - 1 Step 1
        If marks(x) > marks(x + 1) Then <<< "this where the problem is" 
            temp = marks(x + 1)
            marks(x + 1) = marks(x)
            marks(x) = temp
        End If
    Next x
Next i
For a As Integer = 0 To marks.Length
    MsgBox(marks(a))
Next

1 个答案:

答案 0 :(得分:0)

看起来你有一个一个接一个的问题。 x将从0变为marks.Length-1,但在第三行,您尝试获取marks(x + 1)。但是,只要x达到marks.Length - 1的最大值,就会计算为marks( x + 1 ) == marks( (marks.Length - 1) + 1 ) == marks( marks.Length ) - 这确实超出范围。

第二行中的For循环应使用marks.Length - 2 免责声明:如果进行此更改,请添加测试以验证冒泡排序是否仍适用于边缘情况。如果没有,你可能需要进一步调整算法。