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),在数据量较大时效率较低,因此它并不适用于需要高效排序的场合。

相关推荐
千纸鹤安安1 小时前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者3 小时前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent
雨落倾城夏未凉5 小时前
第四章c#方法-参数数组和可选参数(16)
后端·c#
北域码匠7 小时前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
kisshyshy9 小时前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范
To_OC20 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
用户938515635071 天前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
To_OC1 天前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法
饼干哥哥1 天前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程