为什么我这个代码不能把选中的数字排序思路对不对
vb吧
全部回复
仅看楼主
level 7
为什么我这个代码不能把选中的数字排序思路对不对
2020年06月03日 11点06分 1
level 15
给数组a(i)赋值时,i是从0开始的,怎么后面排序和输出的时候,i、j变成从1开始了?
2020年06月03日 11点06分 2
level 7
还是不行我不会0开头的冒泡
2020年06月03日 12点06分 3
你这光改了排序啊,后面的输出呢?还是1 To t啊
2020年06月03日 12点06分
2020年06月03日 12点06分
level 7
大神改了还是不行啊@初音✨七奈
2020年06月03日 12点06分 4
原来是从赋值开始就出错了啊……你这个数组是动态定义的么?那你应该加一句ReDim a(List2.ListCount - 1)
2020年06月03日 12点06分
不是定义的是a(50 to 100)
2020年06月03日 12点06分
level 7
2020年06月03日 12点06分 5
原来你是这样定义的啊[滑稽]这样的数组就不能用常规的排序方法了,不过可以用一种叫做“计数排序”的方法;如果你还想用选择、冒泡等常规方法,那就要重新定义数组了
2020年06月03日 12点06分
level 8
在listbox的属性面板那里,将sorted改为true
这样,你添加进去的数据都是排好序的
2020年06月03日 12点06分 6
level 7
这样还是会出错[泪]
2020年06月03日 12点06分 7
你这里还有一个问题啊,一个t有两个作用了,你到底想让t表示数组元素的个数还是用来交换的中间变量?
2020年06月03日 12点06分
2020年06月03日 13点06分
level 7
还是不行
2020年06月03日 12点06分 8
level 7
啊啊啊啊烦死了
2020年06月03日 12点06分 9
level 7
2020年06月03日 12点06分 10
哦,j应该从0到x-2-i
2020年06月03日 13点06分
2020年06月03日 13点06分
level 7
[泪]
2020年06月03日 13点06分 11
level 7
@初音✨七奈 牛逼解决了为什么是x-2-i,不是总个数减i吗
2020年06月03日 13点06分 12
如果是从1开始的循环,这个比较好理解,外层循环i代表当前是第几轮排序(1 To x-1),内层循环j代表每一轮的循环次数(1 To x-i);如果变成从0开始,那么前后都需要减1,同时由于外层i每次都减了1,内层j的终值如果只减i就少减了1,需要额外再减,所以j变成了0 To x-2-i
2020年06月03日 13点06分
吧务
level 13
' LBound(a) 数组 a 的最小下标
' UBound(a) 数组 a 的最大下标
' 冒泡排序代码如下:
For i = LBound(a) To UBound(a) - 1 ' 外循环
For j = i + 1 To UBound(a) ' 内循环
If a(i) > a(j) Then ' 升序 a(i) > a(j);降序时 a(i) < a(j)
' 交换 a(i) 和 a(j)
End If
Next j
Next i
2020年06月03日 17点06分 13
吧务
level 13
' 选择排序代码如下:
For i = LBound(a) To UBound(a) - 1
k = i
For j = i + 1 To UBound(a)
If a(k) > a(j) Then k = j ' 升序
Next
If k <> i Then
T = a(i): a(i) = a(k): a(k) = T
End If
Next
2020年06月03日 17点06分 14
level 10
你这明显不是易语言,vb不敢去你[太开心][太开心]
2020年06月06日 22点06分 15
1 2 尾页