• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Excel VBA 陣列泡沫排序教學與範例

使用自己定義的泡沫排序法 VBA 函數,處理陣列排序問題。


對於普通陣列的排序而言,快速排序法是效率最高的排序方法(實作請參考 Excel VBA 快速排序教學),但是快速排序法的演算法牽涉到遞迴,如果想要進行客製化的修改,就比較不方便。

如果資料量不大的情況,可以改用泡沫排序法,程式碼簡單易懂,修改也方便。

泡沫排序 VBA 巨集函數

以下是泡沫排序法的 VBA 巨集函數:

' 泡沫排序函數
Public Sub BubbleSort(arr As Variant)
  idxMin = LBound(arr)
  idxMax = UBound(arr)
  For i = idxMin To idxMax - 1
    For j = i + 1 To idxMax
      If arr(i) > arr(j) Then ' 判斷條件
        temp = arr(i)
        arr(i) = arr(j)
        arr(j) = temp
      End If
    Next j
  Next i
End Sub

這段排序程式碼是以遞增的方式排序元素,如果想要修改排序規則,只要修改判斷條件的那一行即可,修改上很方便。例如將大於改成小於,就變成遞減排序。

數值陣列排序

這是使用泡沫排序法來排序數值陣列的範例:

Sub Test()
  ' 建立測試用陣列
  Dim arr As Variant
  arr = Array(2, 5, 4, 1, 3)

  ' 對陣列進行排序
  BubbleSort arr

  ' 輸出結果
  For i = LBound(arr) To UBound(arr)
    Debug.Print "元素 " & i & " = " & arr(i)
  Next i
End Sub

執行後的結果會像這樣:

VBA 數值陣列排序
VBA 數值陣列排序

文字陣列排序

這裡的泡沫排序 VBA 巨集函數也可以用來處理文字的資料:

Sub Test()
  ' 建立測試用陣列
  Dim arr As Variant
  arr = Array("Red", "Yellow", "Green", "Blue")

  ' 對陣列進行排序
  BubbleSort arr

  ' 輸出結果
  For i = LBound(arr) To UBound(arr)
    Debug.Print "元素 " & i & " = " & arr(i)
  Next i
End Sub

執行後的結果會像這樣:

VBA 數值陣列排序
VBA 數值陣列排序

參考資料:Access Excel

分類:Excel 標籤:VBA

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide