vb快速排序源代码
2015-07-18 15:28
337 查看
vb快速排序源代码
a(n)个元素排序原理: n 个元素被分成三段(组):左段l e f t,右段r i g h t和中段m i d d l e。中段仅包含一个元素。左段中各元素都小于等于中段元素,右段中各元素都大于等于中段元素。因此l e f t和r i g h t中的元素可以独立排序,并且不必对l e f t和r i g h t的排序结果进行合并。m i d d l e中的元素被称为支点( p i v o t )。 使用快速排序方法对a(n)排序 从a(n)中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left
和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 比如:
考察元素序列[ 4 , 8 , 3 , 7 , 1 , 5 , 6 , 2 ]。假设选择元素6作为支点,则6位于m i d d l e;4,3,1,5,2位于l e f t;8,7位于r i g h t。当left 排好序后,所得结果为1,2,3,4,5;当r i g h t排好序后,所得结果为7,8。把right 中的元素放在支点元素之后, l e f t中的元素放在支点元素之前,即可得到最终的结果[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]。
分享到:
热心网友
Private Sub Command1_Click()
Dim a(10) As Integer
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 100)
Next i
qsort a, LBound(a), UBound(a)
For i = LBound(a) To UBound(a)
Print a(i);
Next i
Print
End Sub
Sub swap(a As Integer, b As Integer)
t = a: a = b: b = t
End Sub
Sub qsort(a() As Integer, ByVal p As Integer, ByVal r As Integer)
Dim q As Integer
If p >= r Then Exit Sub
q = p
For i = p To r - 1
If a(i) < a(r) Then swap a(i), a(q): q = q + 1
Next i
swap a(q), a(r)
qsort a, p, q - 1
qsort a, q + 1, r
End Sub
a(n)个元素排序原理: n 个元素被分成三段(组):左段l e f t,右段r i g h t和中段m i d d l e。中段仅包含一个元素。左段中各元素都小于等于中段元素,右段中各元素都大于等于中段元素。因此l e f t和r i g h t中的元素可以独立排序,并且不必对l e f t和r i g h t的排序结果进行合并。m i d d l e中的元素被称为支点( p i v o t )。 使用快速排序方法对a(n)排序 从a(n)中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left
和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 比如:
考察元素序列[ 4 , 8 , 3 , 7 , 1 , 5 , 6 , 2 ]。假设选择元素6作为支点,则6位于m i d d l e;4,3,1,5,2位于l e f t;8,7位于r i g h t。当left 排好序后,所得结果为1,2,3,4,5;当r i g h t排好序后,所得结果为7,8。把right 中的元素放在支点元素之后, l e f t中的元素放在支点元素之前,即可得到最终的结果[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]。
分享到:
热心网友
Private Sub Command1_Click()
Dim a(10) As Integer
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 100)
Next i
qsort a, LBound(a), UBound(a)
For i = LBound(a) To UBound(a)
Print a(i);
Next i
End Sub
Sub swap(a As Integer, b As Integer)
t = a: a = b: b = t
End Sub
Sub qsort(a() As Integer, ByVal p As Integer, ByVal r As Integer)
Dim q As Integer
If p >= r Then Exit Sub
q = p
For i = p To r - 1
If a(i) < a(r) Then swap a(i), a(q): q = q + 1
Next i
swap a(q), a(r)
qsort a, p, q - 1
qsort a, q + 1, r
End Sub
相关文章推荐
- VBS 函数和过程默认的传递方式
- 【问题】不能加载 MSCOMCTL.OCX(机房问题)
- VB 中窗体发现冲突名称,将使用名称...怎么解决?
- 机房重构之接口
- 【VB】table表列求和(机房问题)
- 【VB】显示本地机器名(机房问题)
- VB读取超过2G的数据文件
- 中望CAD VBA检测文件是否存在
- VB添加滚轮支持
- VB编程概述
- 【VBS】检索Outlook本地邮箱
- 【VBS】使用Visual Studio调试VBS程序
- 【VBA研究】如何将单元格数据赋给数组
- UFT VB脚本(更新中)
- 【VBA研究】进入文本框后其内容全选
- VB课本总结
- VB前四章
- 一句话vbs下载
- vb.net Datagridview 下拉框应用
- 三种扩展 Office 软件功能的开发模型对比 – Office Add-In Model, VBA 和 VSTO