【问题标题】:Bubble sort and IndexOutOfRangeException冒泡排序和 IndexOutOfRangeException
【发布时间】:2014-08-29 07:44:30
【问题描述】:

我正在尝试实现 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

【问题讨论】:

  • 欢迎来到 Stack Overflow。我已经编辑了你的问题;我认为这样会更好地接受。如果您不同意编辑,您可以将其回滚。 (点击“edited ... ago”文本获取回滚菜单)。祝你好运!

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


【解决方案1】:

您似乎遇到了一个不合时宜的问题。 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
免责声明:如果您进行此更改,请添加测试以验证您的冒泡排序在边缘情况下仍然可以正常工作。如果没有,您可能需要进一步调整算法。

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 2015-02-14
    • 2013-10-09
    • 2015-09-12
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多