![[VB]冒泡排序,第1张 [VB]冒泡排序,第1张](/aiimages/%5BVB%5D%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F.png)
这是升序:
dim shuru(1 to 5)
private sub form_load()
for i = 1 to 5
a(i) = inputbox("请输入第":i:"个数")
print a(i)
next i
for i = 1 to 4
for j = i + 1 to 5
if a(i) >= a(j) then
a1 = a(i)
a(i) = a(j)
a(j) = a1
next j,i
end if
for i = 1 to 5
print a(i)
next i
end sub
这是降序:
dim shuru(1 to 5)
private sub form_load()
for i = 1 to 5
a(i) = inputbox("请输入第":i:"个数")
print a(i)
next i
for i = 1 to 4
for j = i + 1 to 5
if a(i) <= a(j) then
a1 = a(i)
a(i) = a(j)
a(j) = a1
next j,i
end if
for i = 1 to 5
print a(i)
next i
end sub
区别在于先冒出的是大数还是小数
小数就是升序
大数就是降序
Private Sub Command1_Click()
a = Val(InputBox("请输入第一个数:"))
b = Val(InputBox("请输入第二个数:"))
c = Val(InputBox("请输入第三个数:"))
s = "输入的三个数为:" & a & ", " & b & ", " & c & vbCrLf
If a > b Then t = a: a = b: b = t
If a > c Then t = a: a = c: c = t
If b > c Then t = b: b = c: c = t
MsgBox s & "三个数从小到大为:" & a & ", " & b & ", " & c
End Sub
扩展资料:
所以往往评价一个排序算法的好坏往往可以从下边几个方面入手:
(1)时间复杂度:即从序列的初始状态到经过排序算法的变换移位等 *** 作变到最终排序好的结果状态的过程所花费的时间度量。
(2)空间复杂度:就是从序列的初始状态经过排序移位变换的过程一直到最终的状态所花费的空间开销。
(3)使用场景:排序算法有很多,不同种类的排序算法适合不同种类的情景,可能有时候需要节省空间对时间要求没那么多,反之,有时候则是希望多考虑一些时间,对空间要求没那么高,总之一般都会必须从某一方面做出抉择。
(4)稳定性:稳定性是不管考虑时间和空间必须要考虑的问题,往往也是非常重要的影响选择的因素。
-排序算法
Open "C:\testtxt" For Input As #1
Buffer = StrConv(InputB(LOF(1), 1), vbUnicode)
Close #1
Buffer = Split(Buffer, vbNewLine)
For j = 0 To UBound(Buffer) - 1
For k = j + 1 To UBound(Buffer)
NumJ = Split(Buffer(j), vbTab)
NumX = Split(Buffer(k), vbTab)
If Val(NumJ(1)) < Val(NumX(1)) Then
Temp = Buffer(j)
Buffer(j) = Buffer(k)
Buffer(k) = Temp
End If
Next k
Next j
For z = 0 To UBound(Buffer)
Print Buffer(z)
Next z
已帮你搞定!需要注意中间必须用TAB分割,不要用空格
Private Sub Command1_Click()
Dim strArray() As String, intArray() As Integer, strArray1() As String, strConversionArray() As String
Dim x(6), y(6), z(6), intOneDimensionalArray() As Integer
Text1Text = Trim(Text1Text)
strArray = Split(Text1Text, " ")
ReDim strArray1(UBound(strArray) - LBound(strArray), 3), strConversionArray(UBound(strArray) - LBound(strArray), 6)
For i = LBound(strArray) To UBound(strArray)
For j = 1 To 3
strArray1(i, j) = Mid(strArray(i), j, 1)
Next j
Next i
ReDim strConversionArray(UBound(strArray) - LBound(strArray), 6)
For i = 1 To 6
x(i) = (i + 1) \ 2
Next i
y(1) = 2: y(2) = 3: y(3) = 1: y(4) = 3: y(5) = 1: y(6) = 2
z(1) = 3: z(2) = 2: z(3) = 3: z(4) = 1: z(5) = 2: z(6) = 1
For i = LBound(strArray) To UBound(strArray)
For j = 1 To 6
strConversionArray(i, j) = strArray1(i, x(j)) + strArray1(i, y(j)) + strArray1(i, z(j))
Next j
Next i
ReDim intArray(UBound(strArray) - LBound(strArray), 6)
For i = LBound(strArray) To UBound(strArray)
For j = 1 To 6
intArray(i, j) = Val(strConversionArray(i, j))
Next j
Next i
ReDim intOneDimensionalArray(((UBound(strArray) - LBound(strArray)) + 1) 6)
For i = LBound(strArray) To UBound(strArray)
For j = 1 To 6
intOneDimensionalArray(r) = intArray(i, j)
r = r + 1
Next j
Next i
For i = LBound(intOneDimensionalArray) To UBound(intOneDimensionalArray) - 1
For j = i + 1 To UBound(intOneDimensionalArray)
If intOneDimensionalArray(j) < intOneDimensionalArray(i) Then
t = intOneDimensionalArray(i)
intOneDimensionalArray(i) = intOneDimensionalArray(j)
intOneDimensionalArray(j) = t
End If
Next j
Next i
For i = LBound(intOneDimensionalArray) + 1 To UBound(intOneDimensionalArray)
Text2Text = Text2Text + CStr(intOneDimensionalArray(i)) + Space(1)
Next i
End Sub
Private SubCommand1_Click()Dim a(), n AsIntegern = 10ReDim a(n)For i = 1 To n a(i) = Int(Rnd 100)NextCall Sort(a, n)For i = 1 To n Print a(i)NextEnd Sub Sub Sort(ByRef a,n As Integer)Dim i, j, x AsIntegerFor i = 1 To n For j = i + 1 To n If a(i) > a(j) Then x = a(i) a(i) = a(j) a(j) = x End If NextNextEnd Sub
Sub sort(a())
Dim i As Long, j As Long, k As Variant
For i = 1 To UBound(a)
For j = 0 To i
If a(j) < a(i) Then
k = a(j)
a(j) = a(i)
a(i) = k
End If
Next
Next
End Sub
Private Sub Command1_Click()
Dim a, b, c, d, e
Dim s()
a = Int(Rnd 1000)
b = Int(Rnd 1000)
c = Int(Rnd 1000)
d = Int(Rnd 1000)
e = Int(Rnd 1000)
s = Array(a, b, c, d, e)
sort s
a = s(0)
b = s(1)
c = s(2)
d = s(3)
e = s(4)
Print a, b, c, d, e
End Sub
不过建议你用数组而不是单个变量来储存这些数值,这样代码将会简单得多。
什么都不说,先上效果图——
编码——
Private Sub Command1_Click()
Dim s1 As String, s_num As String, a As String
Dim lennum As Integer, lenuchar As Integer, lenlchar As Integer
Dim s_lchar As String, s_uchar As String
Dim i As Integer, length As Integer, value As Integer
s1 = Text1Text
s_num = "" '用来存放数字的字符串变量
s_uchar = "" '用来存放大写字母的字符串变量
s_lchar = "" '用来存放小写字母的字符串变量
length = Len(s1)
For i = 1 To length
a = Mid(s1, i, 1)
value = Asc(a)
Text2Text = value
If value >= 48 And value <= 57 Then s_num = s_num & a
If value >= 65 And value <= 90 Then s_uchar = s_uchar & a
If value >= 97 And value <= 122 Then s_lchar = s_lchar & a
Next i
' 把字符串中的各种字符分类成 数字类,大写字母,小写字母
lennum = Len(s_num)
lenuchar = Len(s_uchar)
lenlchar = Len(s_lchar)
Dim sz() As Integer '定义动态数组
Dim temp As Integer
ReDim sz(1 To lennum) As Integer '定义数组供 数字的ASCII码
For i = 1 To lennum
a = Mid(s_num, i, 1)
sz(i) = Asc(a)
Next i
For i = lennum To 1 Step -1 '最常用的冒泡排序法
For j = 1 To i - 1
If sz(j) > sz(j + 1) Then temp = sz(j): sz(j) = sz(j + 1): sz(j + 1) = temp
Next j
Next i
s_num = "" '清空s_num ,因为要重新排列了
For i = 1 To lennum
s_num = s_num & Chr(sz(i))
Next i
ReDim sz(1 To lenuchar) As Integer '重新定义数组供 大写字母的ASCII码,接下来程序思路与上面类似
For i = 1 To lenuchar
a = Mid(s_uchar, i, 1)
sz(i) = Asc(a)
Next i
For i = lenuchar To 1 Step -1
For j = 1 To i - 1
If sz(j) > sz(j + 1) Then temp = sz(j): sz(j) = sz(j + 1): sz(j + 1) = temp
Next j
Next i
s_uchar = ""
For i = 1 To lenuchar
s_uchar = s_uchar & Chr(sz(i))
Next i
ReDim sz(1 To lenlchar) As Integer '重新定义数组供 小写字母的ASCII码,接下来程序思路与上面类似
For i = 1 To lenlchar
a = Mid(s_lchar, i, 1)
sz(i) = Asc(a)
Next i
For i = lenlchar To 1 Step -1
For j = 1 To i - 1
If sz(j) > sz(j + 1) Then temp = sz(j): sz(j) = sz(j + 1): sz(j + 1) = temp
Next j
Next i
s_lchar = ""
For i = 1 To lenlchar
s_lchar = s_lchar & Chr(sz(i))
Next i
Text2Text = s_uchar & s_lchar & s_num
End Sub
该程序主要运用了Asc()函数获得ASCII码来分辨字母与数字,用 动态数组和重定义来多次运用数组进行排序(冒泡排序法)和赋值 *** 作,用chr()函数还原字符串。
我的程序有点略长,中间有少许重复部分,但我觉得思路比较清晰易懂,适合初学者。你也可以试着自己改进。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)