作者minimatsumi (sugar)
看板Visual_Basic
標題[VB6 ] 插入排序法
時間Wed Jun 15 00:47:01 2011
請問 While j > 1 And A(j - 1) > A(j) 此行出了甚麼問題,
不是每次執行都會出問題,有時候會出現
執行階段錯誤9 陣列索引超出範圍。
以下是我的程式碼
Sub InsertSort(ByRef A, n)
Dim standard, j, temp As Integer
For i = 1 To n - 1
standard = A(i)
j = i + 1
If A(j) < standard Then
While j > 1 And A(j - 1) > A(j)
temp = A(j)
A(j) = A(j - 1)
A(j - 1) = temp
j = j - 1
Wend
End If
Next
End Sub
謝謝 請問有其他更好的寫法嗎?因為總覺得寫的不是很好
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.120.43.238
1F:推 ClubT:陣列索引超出範圍 就是j超出你設定A()陣列的上限 06/15 09:18
2F:→ ClubT:可能是你沒有宣告A()的維度吧 06/15 09:18
3F:→ ClubT:另外要提醒你...陣列一般是從0開始計算 A(0) A(1) ... 06/15 09:19
4F:→ minimatsumi:可是我有設A(1 to 5) 那為什麼有時會錯誤 有時不會 06/15 10:14
5F:→ MOONRAKER:錯誤的時候用watch看變數內容,有工具要會用。 06/15 10:42
6F:推 ClubT:就如樓上說的 看你程式錯在哪一行 看A(j)中的j是否在1~5之間 06/15 11:09
7F:→ minimatsumi:如果dim A(5)就不會有錯 可是dim A(1 to 5)會有錯 06/15 23:36
8F:→ minimatsumi:但還是搞不清楚為什麼不能dim A(1 to 5) 06/15 23:37
9F:→ bulldog:差在A(0)阿,樓下前輩說的要看阿~ 06/16 09:20
10F:→ minimatsumi:前輩們說的用watch監看我有使用,知道問題出在j 06/16 16:40
11F:→ minimatsumi:j<=1時,仍會進入while迴圈....然後a(j-1)=a(0)超出 06/16 16:52
12F:→ minimatsumi:謝謝各位強者,我知道我哪裡錯了..邏輯不對>"< 06/16 17:14