作者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