注册 登录
编程论坛 VB6论坛

求助。。。。。。。哪里错了,输出的数据有问题

ymyan91 发布于 2013-04-26 01:08, 439 次点击

'把3个数组的值复制到第四个数组
For i = 1 To 490
   If i <= 140 Then
   c4(i) = c1(i)
   ElseIf 141 <= i And i <= 290 Then
   c4(i) = c2(i - 140)
   Else: c4(i) = c3(i - 290)
   End If
Next i

'对第四个数组进行排序
For i = 1 To 489
xiabiao(i) = i
Next i
For i = 1 To 489
   For j = i + 1 To 490
   If c4(i) > c4(j) Then
   b = c4(i): c4(i) = c4(j): c4(j) = b
   temp1 = xiabiao(i)
   xiabiao(i) = xiabiao(j)
   xiabiao(j) = temp1
   End If
   Next j
Next i


调试的时候c4(i)=c1(i)的值左右不相等
3 回复
#2
lowxiong2013-04-26 07:29
现在看懂你输出下标的意思了。c4(i)和c1(i)是在什么时候调试不等的?如果是排序后不等很正常,小的数都冒泡到前面来了。程序应该没什么问题的。
如果你是想用数组下标来冒泡,则算法有问题,应该不交换数组c4的值,只需交换下标,代码如下:
for i=1 to 490
  xiabiao(i)=i
next
for i=1 to 489
  for j=i+1 to 490
    if c4(xiabiao(i))>c4(xiabiao(j)) then
      '交换下标,原数组值可以保持不动
      temp1=xiabiao(i)
      xiabiao(i)=xiabiao(j)
      xiabiao(j)=temp1
    endif
  next
next
#3
ymyan912013-04-26 07:44
回复 2楼 lowxiong
一开始就不等了。
#4
lowxiong2013-04-26 13:31
验证你的代码了,没有排序前,数组c1和c4的前140个数完全一样,不是你所说的一开始就不同。排序后c4中的值是从小到大排列的,其前140个数就和c1不一样了,参见我的调试图如下:
只有本站会员才能查看附件,请 登录
1