VB实现6大排序算法---动态过程展示(建议收藏)

VB实现6大排序算法:插入排序、基数排序、快速排序、希尔排序、选择排序、归并排序。可以随机生成指定个数的数据,显示排序过程,给出排序结果,计算排序算法消耗的时间。

生成随机数:

在这里插入图片描述

排序结果:

在这里插入图片描述
插入排序:

在这里插入图片描述

选择排序:

在这里插入图片描述

归并排序:

在这里插入图片描述
快速排序:

在这里插入图片描述
希尔排序:

在这里插入图片描述
基数排序:

在这里插入图片描述
核心代码

VERSION 1.0 CLASS
BEGINMultiUse = -1  'TruePersistable = 0  'NotPersistableDataBindingBehavior = 0  'vbNoneDataSourceBehavior  = 0  'vbNoneMTSTransactionMode  = 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 - 1ReDim 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 Numm = it = L(i)For j = i + 1 To NumIf t > L(j) Thent = L(j)m = jEnd IfNext jIf m <> j Thent = L(i)L(i) = L(m)L(m) = tEnd 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 > LeftAux(i - 1) = A(i - 1)i = i - 1
Wend
For j = m To Right - 1Aux(Right + m - j) = A(j + 1)
Next j
For k = Left To RightIf Aux(j) < Aux(i) ThenA(k) = Aux(j)j = j - 1ElseA(k) = Aux(i)i = i + 1End If
Next k
End Sub
Public Sub mergeSort(ByRef L() As Integer, ByVal Left As Long, ByVal Right As Long)
Dim m As Long
m = Int(Left / 2 + Right / 2)
If Right <= Left Then Exit Sub
mergeSort L, Left, m
mergeSort L, m + 1, Right
Merge L, Left, m, Right
End Sub
Public Sub QuickSort(L() As Integer, ByVal Low As Long, ByVal High As Long)
Dim i As Long
Dim j As Long
Dim Pivotkey As Integer
i = Low: j = High
Pivotkey = L(Low)
While (i < j)While (i < j And Pivotkey <= L(j))j = j - 1WendIf (i < j) ThenL(i) = L(j)i = i + 1End IfWhile (i < j And L(i) < Pivotkey)i = i + 1WendIf (i < j) ThenL(j) = L(i)j = j - 1End If
Wend
L(i) = Pivotkey
If (Low < i) Then QuickSort L, Low, i - 1
If (i < High) Then QuickSort L, j + 1, High
End Sub
Private Function Less(ByVal V As Long, Rx() As Integer, ByVal Item As Long) As BooleanIf Item < 0 Then Less = False: Exit FunctionLess = V < Rx(Item)
End Function
Public Sub ShellSort(A() As Integer, ByVal Left As Long, ByVal Right As Long)
Dim i As Long
Dim j As Long
Dim h As Long
Dim V As Integer
Dim pa As Integer
h = 1
For i = 1 To (Right - Left) / (Num - 1)h = 3 * h + 1
Next i
While (h > 0 And DoEvents)For i = Left + h To Rightj = iV = A(i)While (j >= L + h And Less(V, A, j - h))A(j) = A(j - h)j = j - hWendA(j) = VIf En Then DispNext ih = Int(h / 3)
Wend
End Sub
Sub RadixSort(A() As Integer, ByVal n As Long)
Dim Max As Integer
Dim Count As Long
Dim m As Long
Max = 0
For i = 0 To nIf Max < A(i) Then Max = A(i)
Next iReDim Aux(Max + 1)
For i = 0 To nm = A(i)Aux(m) = Aux(m) + 1
Next im = 0
For i = 0 To MaxCount = Aux(i)If Count <> 0 ThenFor j = 0 To Count - 1A(m) = im = m + 1Next jEnd If
Next i
End Sub
Public Sub InsertSort(ByRef A() As Integer, ByVal n As Long)
Dim i As Long
Dim j As Long
Dim Tmp As Integer
For i = 1 To nIf (A(i) < A(i - 1)) ThenTmp = A(i)A(i) = A(i - 1)j = i - 2While (Less(Tmp, A, j))j = j - 1If (j >= 0) ThenA(j + 1) = A(j)End IfWendA(j + 1) = TmpEnd If
Next i
End SubPrivate Sub Class_Terminate()
Erase Aux
End Sub

获取完整源代码,请私信博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 实现 Actor并发模型 (案例版)

啥是Actor模型Actor (英语翻译 演员) 这个概念要回溯到面向对象程序设计的本身上来&#xff0c;更偏向于现实世界&#xff0c;现实世界就是由单个个体&#xff08;人&#xff09;与其他个体或(人&#xff09;通讯&#xff08;消息&#xff09;组成的现实世界&#xff0c;所以&a…

oracle--number

1. oracle的number类型是oracle的内置类型之一&#xff0c;是oracle的最基础数值数据类型。在9iR2及其以前的版本中只支持一种适合存储数值数据的固有数据类型&#xff0c;在10g以后&#xff0c;才出现了两种新的数值类型&#xff0c;即推出本地浮点数据类型(Native Floating-P…

超详细C语言版数据结构:图的深度优先遍历(推荐收藏)

文章目录一、邻接矩阵存储图的深度优先遍历过程分析二、结果分析三、C语言编程实现图的深度优先遍历四、图的遍历及其应用一、邻接矩阵存储图的深度优先遍历过程分析 对图1这样的无向图&#xff0c;要写成邻接矩阵&#xff0c;则就是下面的式子&#xff1a; 一般要计算这样的问…

Navicat Premium 64 bit 12.1.25

Navicat Premium可让你以单一程序同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库&#xff0c;是一个可多重连接的数据库管理工具&#xff0c;它让管理不同类型的数据库更加方便。 官方下载地址&#xff1a;https://www.navicat.com.cn/download/…

C语言试题166之整数逆序输出

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:将一个从…

[JMX一步步来] 7、用JDK5.0的JConsole来连接MBean

前面所有看效果都是通过Html网页来看的。JDK5.0自带了一个jmx客户端&#xff0c;叫jconsole&#xff0c;位于c:\jdk\bin\jconsole.exe。我们来用用这个客户端来连接Mbean Server。一、vm参数方式1、还是用第一篇的那个HelloAgent&#xff0c;修改HelloAgent&#xff0c;将第一句…

记一次 .NET 某新能源系统 线程疯涨 分析

一&#xff1a;背景 1. 讲故事前段时间收到一个朋友的求助&#xff0c;说他的程序线程数疯涨&#xff0c;寻求如何解决。等我分析完之后&#xff0c;我觉得这个问题很有代表性&#xff0c;所以拿出来和大家分享下&#xff0c;还是上老工具 WinDbg。二&#xff1a;WinDbg 分析 1…

【原创】请避免GO语言中的携程空跑(CPU突然激增)

其实GO语言从1.6版本开始非常不错了&#xff0c;GC性能优化非常到位&#xff0c;并且各种并行设计比从新实现一套C版本的确是方便不少。 语言包也很多&#xff0c;库也相对稳定&#xff0c;完全可以适用于生产环境。 本文主要是给刚刚入门新手注意一个携程空跑的问题&#xff0…

在Linux上启动oracle 11g OEM

[rootfmw ~]# su - oracle[oraclefmw ~]$ emctl start dbconsole转载于:https://blog.51cto.com/weichanglong/1762783

[转]ES7、ES8、ES9、ES10新特性大盘点

ES7、ES8、ES9、ES10新特性大盘点 本文转自&#xff1a;https://mp.weixin.qq.com/s/8bov6788ivV0sHzmwrn5lw 以下文章来源于前端工匠 &#xff0c;作者浪里行舟君 前端工匠 我是浪里行舟&#xff0c;Github博客4000star作者&#xff0c;致力于打造一系列能够帮助初中级工程师…

热榜!!!数据结构与算法:C语言版---数组与稀疏矩阵---强势来袭!

数组是各种计算机语言中经常使用到的重要数据结构&#xff0c;一般的说&#xff1a;在内存中申请一片连续地址的存储空间、存储这些数、就称为数组。 在C语言中&#xff0c;申请连续的存储空间是很容易的事情&#xff0c;但难在多维数组的组织、以及数组数据的压缩上&#xff…

C语言试题167之字符串加密和解密算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:在本实例…

第一声问候

前一篇《Emacs 是一台计算机》理解了 Emacs 身为计算机的本质之后&#xff0c;在 Emacs 里编程就顺理成章了。不过&#xff0c;在此之前&#xff0c;还需要略微介绍一下 Emacs 最基本的操作。 系统的不一致&#xff0c;令人有点烦躁 现在&#xff0c;也可以坦然地说&#xff0c…

破解支付宝AR红包

支付宝新出的AR红包没多久&#xff0c;就有人破解了&#xff0c;大致原理是将上面的像素条遮挡下面的黑条&#xff0c;基本上得到模糊的图就可以扫到红包。不过现在大多是ps解决&#xff0c;那得有多麻烦啊&#xff0c;所以我用java写了一个&#xff0c;效果还不错。 先截屏&am…

在 Windows 上搭建配置 Jenkins 然后编译打包 VS 项目

在 Windows 上搭建配置 Jenkins 然后编译打包 VS 项目独立观察员 2022 年 7 月 6 日一、安装1、下载并安装 JRE &#xff08;Java 运行环境&#xff09;。2、下载 Windows 版本的 Jenkins 安装包并安装。3、安装 Visual Studio&#xff0c;以供编译项目使用。4、安装 Advanced …

【ArcGIS微课1000例】0007:基于数字高程模型DEM生成剖面线、剖面图

文章目录 效果预览数据分析工具介绍生成过程剖面图编辑保存、导出剖面图实验数据下载效果预览 数据分析 本实例使用到的原始数据为案例提供的规则格网DEM

[转]javaandroid线程池

java多线程-概念&创建启动&中断&守护线程&优先级&线程状态&#xff08;多线程编程之一&#xff09;java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()&#xff08;多线程编程之二&#xff09;java&android线程池-Exe…

C#实现清理系统内存

金山内存整理工具、360内存清理工具非常好用&#xff0c;可以将系统内存最小化&#xff0c;提升系统运行速度。其实这些事情C#也可以做到&#xff0c;原理就是对系统进程中的进程内存进行逐个优化。 网上大多推荐使用系统的SetProcessWorkingSetSize的函数API&#xff0c;但是经…

C语言试题168之获取矩阵的最大值及其下标

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:要求使用…

.Net下极限生产力之efcore分表分库全自动化迁移CodeFirst

开始本次我们的主题就是极限生产力,其他语言望尘莫及的分表分库全自动化Migrations Code-First 加 efcore 分表分库无感开发还记得上次发布博客还是在上次,上次发布了如何兼容WTM框架后也有不少小伙伴来问我如何兼容如何迁移等问题,经过这么多框架的兼容我自己也认识到了一些问…