VB之舞动青春--激扬排序
来源:互联网 发布:最好的我们网络剧下载 编辑:程序博客网 时间:2024/05/01 10:07
到现在为止,我还没有真正写过一篇关于VB学习的博客,那么今天就来开个头吧。
前两天米老师讲了关于VB中产生随机数的例子,而且让我们自己想一下关于对产生的10个数字进行从小到大的排序的问题。俗话说百看不如一练(不知有没有这句俗话),所以自己便根据网上的一些对排序的资料和视频加上自己的理解,写出了几种算法,拿来与大家分享。
先看下代码吧:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dim c As Integer
Dim t As Integer
Dim flag As Integer
Dim a(9)
Dim p As String
Private Sub Command1_Click()
'--------------产生10个随机不重复数字----------------
Dim i As Integer
p = "" '清空变量p的值
Randomize '初始化随机数生成器
Label1.Caption = "" '清空标签框的内容
a(0) = Int(100 * Rnd + 1) '第一个数不需要比较
For i = 1 To 9 '循环产生9个数字
c = Int(100 * Rnd + 1) '第二个数开始以后需要比较,则先进行比较
flag = 1 '标志位,假设产生的数字没有重复
For t = 0 To i - 1 '与前边产生的数字进行比较
If c = a(t) Then
i = i - 1 '如果重复,则废掉这个数,重新产生
flag = 0 '标志位为假
Exit For '如果有重复,则退出循环
End If
Next t
If flag = 1 Then
a(i) = c '如果没有重复,则将值赋给数组
End If
Next i
'---------------------------------------------------------
For i = 0 To 9
p = p & " " & a(i)
Next i
Label1.Caption = p '标签框显示数组的内容
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------Private Sub Command2_Click()
p = ""
Dim j As Integer
Dim i As Integer
Dim temp As Integer
'----------------------------第一种算法-------------------
'---------------------------每次选最大--------------------
' For i = 1 To 9 一共进行9次循环排序
' For j = 0 To 9 - i
' If a(j) > a(j + 1) Then 每次循环排序选出一个最大值
' temp = a(j)
' a(j) = a(j + 1)
' a(j + 1) = temp
' End If
' Next j
' Next i
'-------------------------------冒泡排序-------------------------------
'---------------------------------第二种算法-----------------------------
'---------------------------------每次选最小----------------------------
' Dim min_index As Integer
' For i = 0 To 8 循环9次排序,每次选出一个最小值放在最前
' min_index = i 假设该数为最小
' For j = i + 1 To 9 上一次循环选出的最小值不参与本次循环
' If a(j) < a(min_index) Then
' min_index = j 如果后边的数小,则将后者设置为最小
' End If
' If min_index <> i Then 如果最小不是最初假设的值
' temp = a(i)
' a(i) = a(min_index)
' a(min_index) = temp 将最小值放在本次循环的最前
' End If
'min_index = i 重新赋值min_mindex的值
' Next j
' Next i
'-------------选择排序----------------
'-------------第三种算法--------------
'-------------插入排序----------------
' For i = 1 To 9 一共进行9次循环比较
' For j = 0 To i - 1 产生的第j个数与这个数前边的所有数比较
' If a(i) < a(j) Then 找到第j个数应该的位置
' temp = a(i)
' a(i) = a(j)
' a(j) = temp 第j个数前的数已经排好
' End If
' Next j
' Next i
'--------------------------------------
'---------------------第四种算法--------------------------
----------------------土豆视频法--------------------------
For i = 0 To 4 '第一次循环
If a(i) > a(i + 5) Then '相隔4位进行比较,小数放前
temp = a(i)
a(i) = a(i + 5)
a(i + 5) = temp
End If
Next i
For i = 3 To 9 '第二次循环
If a(i) < a(i - 3) Then '相隔2位进行比较,小数放前
temp = a(i)
a(i) = a(i - 3)
a(i - 3) = temp
End If
If i > 5 Then '第一次交换后,还需要与前一个相隔2位的数字比较
If a(i - 3) < a(i - 6) Then '小数放前
temp = a(i - 3)
a(i - 3) = a(i - 6)
a(i - 6) = temp
End If
End If
Next i
For i = 0 To 8 '第三次循环
If a(i) > a(i + 1) Then '相邻的数字进行比较,小数放前
temp = a(i)
a(i) = a(i + 1)
a(i + 1) = temp
If i > 0 Then '第二次交换
If a(i) < a(i - 1) Then '小的数字放前
temp = a(i)
a(i) = a(i - 1)
a(i - 1) = temp
If i > 1 Then '第三次交换
If a(i - 1) < a(i - 2) Then '小的数字放前
temp = a(i - 2)
a(i - 2) = a(i - 1)
a(i - 1) = temp
End If
End If
End If
End If
End If
Next i
'-------------------------------------------------
For i = 0 To 9
p = p & " " & a(i) '标签框显示排序后的数组
Next i
Label1.Caption = p
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
顺便附上两张最后的效果图:
产生10个随机数:
对于优酷视频上的那种算法,我表示想不出代码该怎样写....等待灵感吧...阿门......其实我觉得对于排序与生活是一样的,只要有一个思路,和一个目的,然后向着那个目的一步一步的靠近,最后肯定就会达到预期的结果。比如第一种算法,每次比较随然只选出一个数,但我把他放在最后,那么就离最后的结果进了一步,因为我们已经找到了最大的数,然后下次再找的时候这个最大的数就不需要再次进行循环比较,我们学习不是也是这个样子么?每天不需要进步太多,只需要一点儿点儿,但是一定是在向着我们最后的目的去的,那么最终我们一定会到达我们的目的,到达我们梦想的彼岸!
就这样吧,望多多包容指教。
- VB之舞动青春--激扬排序
- 舞动的青春(1)
- 舞动的排序算法
- 用创业舞动飞扬的青春
- 好玩的舞动排序算法
- 青春在他们手里舞动,而我却……
- 超星慕课放飞心灵 激扬青春中职生心理健康答案题库
- Android雁翎刀之ImageView之舞动乾坤
- 激扬文字
- 舞动的排序算法[经典排序算法娱乐版]
- VB之15个数字的排序
- VB之15个数的排序
- 我校CSDN高校俱乐部“微爱校园·舞动青春”小型广场晚会及舞会圆满成功!
- 青春之Sc
- 青春之痕
- 青春之歌
- 乱入之青春
- vb排序
- 2013年企业CIO必做的八大IT规划(转)
- hdu1037
- Delphi的窗体停靠
- scientific linux修改系统时间
- poj-2635-The Embarrassed Cryptographer
- VB之舞动青春--激扬排序
- Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片
- offsetParent到底是什么?
- graph
- 微软的24年数据中心之路
- C10K Problem
- Eclipse去掉对JS文件的Validation .
- 一位大牛整理的Python资源
- jquery做的下拉框应用