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

相关推荐
sali-tec4 分钟前
C# 基于halcon的视觉工作流-章42-手动识别文本
开发语言·人工智能·算法·计算机视觉·c#·ocr
SandySY32 分钟前
品三国谈人性
算法·架构
小欣加油40 分钟前
leetcode 62 不同路径
c++·算法·leetcode·职场和发展
夏鹏今天学习了吗41 分钟前
【LeetCode热题100(38/100)】翻转二叉树
算法·leetcode·职场和发展
夏鹏今天学习了吗41 分钟前
【LeetCode热题100(36/100)】二叉树的中序遍历
算法·leetcode·职场和发展
DTS小夏1 小时前
算法社Python基础入门面试题库(新手版·含答案)
python·算法·面试
Mr.Ja1 小时前
【LeetCode热题100】No.11——盛最多水的容器
算法·leetcode·贪心算法·盛水最多的容器
冷徹 .2 小时前
2024ICPC区域赛香港站
数据结构·c++·算法
小杨的全栈之路2 小时前
冒泡、插入、选择、归并、堆排序:从名字由来到Java实现,一篇讲透
java·排序算法
浅川.252 小时前
xtuoj string
开发语言·c++·算法