📅  最后修改于: 2023-12-03 15:29:48.721000             🧑  作者: Mango
冒泡排序是一种基本排序算法,也是最简单的一种排序算法之一。它反复遍历要排序的数列,每次比较相邻两个元素,如果顺序不对则交换它们的位置,直到整个数列都是有序的为止。该算法的时间复杂度为 $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
递归版冒泡排序代码虽然简洁,但在排序大规模数组时效率比较低,因为递归调用会带来额外的开销。因此使用递归版冒泡排序时需要谨慎。