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

Why am I receiving an index out of range exception on my insertion sort?

此插入排序用于将数组按升序排序,当它尝试这样做时,我收到索引超出范围异常,发生这种情况时 "j" 为 0,"i" 为 1 . 它尝试将第一个元素中的值与索引为“-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

你的台词

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 时才评估测试的第二部分。