VB实现6大排序算法:插入排序、基数排序、快速排序、希尔排序、选择排序、归并排序。可以随机生成指定个数的数据,显示排序过程,给出排序结果,计算排序算法消耗的时间。
生成随机数:
排序结果:
插入排序:
选择排序:
归并排序:
快速排序:
希尔排序:
基数排序:
核心代码
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "Sort"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Private Num As Long
Private Aux() As Integer
Private R() As Integer
Private Sub Class_Initialize()
Num = 0
End Sub
Public Property Let SetNum(ByVal NumberOfData As Long)
Num = NumberOfData - 1
ReDim Aux(NumberOfData)
End Property
Public Property Let SetRArray(ByRef RArray() As Integer)
R = RArray
End Property
Public Sub selectSort(L() As Integer)
Dim i As Long
Dim j As Long
Dim m As Long
Dim t As Integer
For i = 0 To Num
m = i
t = L(i)
For j = i + 1 To Num
If t > L(j) Then
t = L(j)
m = j
End If
Next j
If m j Then
t = L(i)
L(i) = L(m)
L(m) = t
End If
Next i
End Sub
Sub Merge(ByRef A() As Integer, ByVal Left As Long, ByVal m As Long, ByVal Right As Long)
Dim i As Long
Dim j As Long
Dim k As Long
i = m + 1
While i > Left
Aux(i - 1) = A(i - 1)
i = i - 1
Wend
For j = m To Right - 1
Aux(Right + m - j) = A(j + 1)
Next j
For k = Left To Right
If Aux(j)
关注
打赏
热门博文
- 【ArcGIS风暴】ArcGIS标注和注记的区别及用法案例详解
- 【GIS风暴】什么是EPSG?常见坐标系对应的EPSG代号、经度范围、中央经线是多少?
- 【GlobalMapper精品教程】008:如何根据指定区域(shp、kml、cad)下载卫星影像?
- 【MapGIS精品教程】005:MapGIS中间件的配置与使用
- Win7+Win10双系统安装全攻略
- 【ArcGIS Pro微课1000例】0021:Win10系统ArcGIS Pro3.0.1安装教程(附ArcGIS Pro下载)
- 【测绘程序设计】Excel度(°)转换度分秒(° ‘ “)模板附代码超实用版
- 【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐标文件生成矢量点
- 【GlobalMapper精品教程】005:影像拼接与裁切(分幅)作业案例教程
- 【GlobalMapper精品教程】002:GlobalMapper中文版安装后的基本设置