📜  c#冒泡排序递归(1)

📅  最后修改于: 2023-12-03 15:29:48.721000             🧑  作者: Mango

C# 冒泡排序(递归版)

冒泡排序是一种基本排序算法,也是最简单的一种排序算法之一。它反复遍历要排序的数列,每次比较相邻两个元素,如果顺序不对则交换它们的位置,直到整个数列都是有序的为止。该算法的时间复杂度为 $O(N^2)$。

代码实现

下面给出 C# 的递归版冒泡排序代码:

static void BubbleSort(int[] arr, int n)
{
    if (n == 1)
        return;

    for (int i = 0; i < n - 1; i++)
    {
        if (arr[i] > arr[i + 1])
        {
            int temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }

    BubbleSort(arr, n - 1);
}

上述代码中,首先判断数组大小是否为 1,若是则直接返回。接着进行一次冒泡操作(即遍历数组一次并交换相邻两个元素的位置),然后递归调用自身,排序数组的大小减 1。

示例

下面给出一个示例,演示递归版冒泡排序的使用:

static void Main(string[] args)
{
    int[] arr = { 64, 25, 12, 22, 11 };
    BubbleSort(arr, arr.Length);

    Console.Write("排序后的数组:");
    for (int i = 0; i < arr.Length; i++)
        Console.Write("{0} ", arr[i]);
    Console.ReadKey();
}

执行结果如下:

排序后的数组:11 12 22 25 64
总结

递归版冒泡排序代码虽然简洁,但在排序大规模数组时效率比较低,因为递归调用会带来额外的开销。因此使用递归版冒泡排序时需要谨慎。