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.pswp.cn/news/285112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285112.shtml
英文地址,請注明出處:http://en.pswp.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框架后也有不少小伙伴來問我如何兼容如何遷移等問題,經過這么多框架的兼容我自己也認識到了一些問…