为什么我在插入排序时收到索引超出范围异常?
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
时才评估测试的第二部分。
此插入排序用于将数组按升序排序,当它尝试这样做时,我收到索引超出范围异常,发生这种情况时 "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
时才评估测试的第二部分。