为什么我在插入排序中收到超出范围异常的索引?

时间:2017-08-23 20:18:12

标签: vb.net visual-studio sorting insertion-sort insertion

此插入排序用于按升序对数组进行排序,当它尝试这样做时,我会收到超出范围异常的索引,当发生这种情况时," j"是0和"我"它试图将第一个元素中的值与元素中的值进行比较,索引为" -1"哪个不存在。我可以使这些代码发生什么变化?

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Dim i, j, element, length As Integer
    Dim array(7) As Integer
    array(0) = 5
    array(1) = 2
    array(2) = 7
    array(3) = 6
    array(4) = 9
    array(5) = 1
    array(6) = 4
    array(7) = 8

    length = array.Length


    For i = 1 To length - 1
        j = i
        While j > 0 And array(j) < array(j - 1)
            If array(j - 1) > array(j) Then
                element = array(j)
                array(j) = array(j - 1)
                j = j - 1
                array(j) = element
            End If
        End While
    Next



    For Index As Integer = 0 To 7
        ListBox1.Items.Add(array(Index))
    Next


End Sub

1 个答案:

答案 0 :(得分:0)

你的话说

While j > 0 And array(j) < array(j - 1)
每当j为零时,

都会给出索引超出范围错误(因为j - 1将为-1且您没有array(-1)元素。

将该行更改为

While j > 0 AndAlso array(j) < array(j - 1)

以便仅在第一部分为True时评估测试的第二部分。