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