[VB6 ] 插入排序法

看板Visual_Basic作者 (sugar)時間13年前 (2011/06/15 00:47), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/1
請問 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

06/15 09:18, , 1F
陣列索引超出範圍 就是j超出你設定A()陣列的上限
06/15 09:18, 1F

06/15 09:18, , 2F
可能是你沒有宣告A()的維度吧
06/15 09:18, 2F

06/15 09:19, , 3F
另外要提醒你...陣列一般是從0開始計算 A(0) A(1) ...
06/15 09:19, 3F

06/15 10:14, , 4F
可是我有設A(1 to 5) 那為什麼有時會錯誤 有時不會
06/15 10:14, 4F

06/15 10:42, , 5F
錯誤的時候用watch看變數內容,有工具要會用。
06/15 10:42, 5F

06/15 11:09, , 6F
就如樓上說的 看你程式錯在哪一行 看A(j)中的j是否在1~5之間
06/15 11:09, 6F

06/15 23:36, , 7F
如果dim A(5)就不會有錯 可是dim A(1 to 5)會有錯
06/15 23:36, 7F

06/15 23:37, , 8F
但還是搞不清楚為什麼不能dim A(1 to 5)
06/15 23:37, 8F

06/16 09:20, , 9F
差在A(0)阿,樓下前輩說的要看阿~
06/16 09:20, 9F

06/16 16:40, , 10F
前輩們說的用watch監看我有使用,知道問題出在j
06/16 16:40, 10F

06/16 16:52, , 11F
j<=1時,仍會進入while迴圈....然後a(j-1)=a(0)超出
06/16 16:52, 11F

06/16 17:14, , 12F
謝謝各位強者,我知道我哪裡錯了..邏輯不對>"<
06/16 17:14, 12F
文章代碼(AID): #1Dzv27Mj (Visual_Basic)