gpt4 book ai didi

vb.net - 实现插入排序时出现越界错误

转载 作者:行者123 更新时间:2023-12-02 03:02:57 25 4
gpt4 key购买 nike

看来 VB.NET 会评估 bool 条件的两边 While j >= 1 And Card(j - 1) > NextCard,这当然会导致越界错误。

我编写的其他语言会首先评估左侧条件并在第二个条件导致程序崩溃之前退出循环。

任何人都可以看到一个明显的解决方案,还是我只需要把算法变成一团困惑?

Sub Main()
Dim card() As Integer = {7, 4, 6, 8, 1, 5}
Insertion_Sort(card)
For Each item In card
Console.WriteLine(item)
Next
End Sub

Sub Insertion_Sort(ByRef Card() As Integer)
Dim NextCard
Dim j As Integer

For i = 1 To Card.Length - 1
NextCard = Card(i)
j = i
While j >= 1 And Card(j - 1) > NextCard
Card(j) = Card(j - 1)
j -= 1
End While
Card(j) = NextCard
Next
End Sub

最佳答案

正如 Capellan 所建议的,可以使用 AndAlso 关键字代替 And 来完成短路评估:

While j >= 1 AndAlso Card(j - 1) > NextCard
Card(j) = Card(j - 1)
j -= 1
End While

这会导致 VB.Net 首先计算第一个表达式,然后,仅当第一个表达式为 true 时,才会计算第二个表达式。

我建议您还查看 MSDN 页面:https://msdn.microsoft.com/en-us/library/cb8x3kfz.aspx

关于vb.net - 实现插入排序时出现越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33650318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com