C# 排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

下面是冒泡排序的C#实现:

csharp 复制代码
using System;  
  
class Program  
{  
    static void Main(string[] args)  
    {  
        // 定义一个整型数组arr
        int[] arr = { 64, 34, 25, 12, 22, 11, 90 };  
        // 调用BubbleSort方法对数组arr进行排序  
        BubbleSort(arr);  
        Console.WriteLine("排序结果: ");  
        // 调用PrintArray方法打印排序后的数组  
        PrintArray(arr);  
    }  
  
    // 定义一个静态方法BubbleSort,用于对整型数组进行冒泡排序  
    static void BubbleSort(int[] arr)  
    {  
        // 获取数组的长度  
        int n = arr.Length;  
        // 外层循环控制排序的总轮数  
        for (int i = 0; i < n - 1; i++)  
        {  
            // 内层循环负责在每一轮中进行实际的元素比较和交换  
            for (int j = 0; j < n - i - 1; j++)  
            {  
                // 如果当前元素大于下一个元素,则交换它们的位置  
                if (arr[j] > arr[j + 1])  
                {  
                    // 交换arr[j]和arr[j+1]的值  
                    int temp = arr[j];  
                    arr[j] = arr[j + 1];  
                    arr[j + 1] = temp;  
                }  
            }  
        }  
    }  
  
    // 定义一个静态方法PrintArray,用于打印整型数组的内容  
    static void PrintArray(int[] arr)  
    {  
        foreach (int i in arr)  
        {  
            Console.Write(i + " ");  
        }  
        Console.WriteLine();  
    }  
}

在这个实现中,BubbleSort 方法接受一个整型数组 arr 作为参数,并对其进行原地排序。它使用了两层嵌套的循环:外层循环控制排序的总轮数,内层循环负责在每一轮中进行实际的元素比较和交换。内层循环每完成一轮,就能确保数组中的最大元素被"冒泡"到它应该在的位置(即数组的末尾)。因此,随着外层循环的进行,需要排序的元素数量逐渐减少,直到整个数组排序完成。

PrintArray 方法用于打印排序后的数组,以便于验证排序结果。

需要注意的是,冒泡排序的时间复杂度为O(n^2),在数据量较大时效率较低,因此它并不适用于需要高效排序的场合。

相关推荐
讳疾忌医丶几秒前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
高亦真26 分钟前
今天是学习嵌入式的第37天
linux·学习·算法
zxy28472253012 小时前
C# 音频倍速播放
c#·音频·naudio·soundtouch·倍速
罗西的思考2 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 --- (2)--- 训练
人工智能·算法·机器学习
深圳市方中禾科技3 小时前
FZH1625 LCD 驱动芯片深度评测与实战指南
算法·led
我不会起名字3224 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
Water_Sunzhipeng5 小时前
HandyControl Demo 设置特定框架记录
c#
huang5791476 小时前
哈希算法的抗碰撞机制与安全性增强策略4
算法
czhc11400756636 小时前
插补、另存为、标记过滤、采集超时——今天聊的四件事
c#
林浩杨_6 小时前
SIGIR 2026|南京大学:Video-GAR:“通过生成 Query 来验证视频语义理解”的生成增强范式
论文阅读·人工智能·算法