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

相关推荐
阿松爱学习6 小时前
【Unity开发】监听Scene场景事件
unity·c#
碧海银沙音频科技研究院6 小时前
基于炬芯ATS3089X自研AEC声学回声消除算法
算法
通问AI6 小时前
在两台 Mac Studio 上跑 800B 模型:MLX + RDMA over Thunderbolt 实测与四道门选型法
算法
ZywOo6236 小时前
《算法竞赛进阶指南》0x03 前缀和与差分
算法
Scintilla_y7 小时前
DAY2 滑动窗口
算法·leetcode·散列表
lvwangshu7 小时前
笛卡尔树
算法·图论
026d237 小时前
状态信号只知“其然”不知“其所以然”:变工况机械故障诊断的物理盲区
算法
姜鱼问生7 小时前
备份和服务器在同一台机器上,等于没备份
算法·架构
姜鱼问生7 小时前
别再 chmod 777 了,用 ACL 给它开一扇窗
后端·算法·架构
特立独行的猫a8 小时前
仓颉语言UI开发实战:我用仓颉写了个桌面版力扣
算法·leetcode·ui·tauri·仓颉·cj-tarui