VBA: 冒泡排序法的代码实现

Posted 数据处理与编程实践

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA: 冒泡排序法的代码实现相关的知识,希望对你有一定的参考价值。

文章背景:冒泡排序(Bubble Sort)是排序算法里面比较简单的一个排序,在工作中用到的并不多,主要是想了解其中的算法思想,从而让我们的思维更加开阔。

基本原理:

  • 从序列头部开始遍历,两两比较,如果前者比后者大,则交换位置,直到最后将最大的数(本次排序最大的数)交换到无序序列的尾部,从而成为有序序列的一部分;

  • 下次遍历时,此前每次遍历后的最大数不再参与排序;

  • 多次重复此操作,直到序列排序完成。

  • 由于在排序的过程中总是小数往前放,大数往后放,类似于气泡逐渐向上漂浮,所以称作冒泡排序。

       程序框图:(示例:一维数组,从小到大排列。)

      代码实现:

Option Explicit

Sub BubbleSort()

   Dim n As Integer, temp As Double
   Dim i As Integer, j As Integer
   
   n = Selection.Rows.Count
   
   For i = 2 To n
   
       For j = 2 To n - i + 2
       
           If Selection.Cells(j - 1, 1) > Selection.Cells(j, 1) Then
           
               temp = Selection.Cells(j, 1)
               Selection.Cells(j, 1) = Selection.Cells(j - 1, 1)
               Selection.Cells(j - 1, 1) = temp
               
           End If
       
       Next
       
   Next
   
End Sub

      运行效果:

参考资料:

[1] 算法之旅 | 冒泡排序法(https://zhuanlan.zhihu.com/p/28965019

[2] Excel/VBA for Creative Problem Solving, Part 1(https://www.coursera.org/learn/excel-vba-for-creative-problem-solving-part-1/lecture/trGtF/putting-it-all-together-example-2


以上是关于VBA: 冒泡排序法的代码实现的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 冒泡排序法的详细解释是啥?

八大数据排序法冒泡排序法的图形理解和案例实现 | C++

编一个C++程序 创建一个选择排序法的函数模板sort 并在main()执行

基于冒泡排序法的低速率低功耗无线传感网

PHP--冒泡选择插入排序法

蛮力法——冒泡排序