排序算法——冒泡排序(冒泡排序 算法)
// 冒泡排序的方法
static void BubbleSort(int[] arr)
{
// 获取数组的长度
int len = arr.Length;
// 外层循环控制排序的趟数,每趟都会找出一个最大或最小的元素
for (int i = 0; i < len - 1; i++)
{
// 内层循环控制比较的次数,每次都会比较相邻的两个元素
for (int j = 0; j < len - 1 - i; j++)
{
// 如果左边的元素大于右边的元素,就交换它们的位置
// 如果是升序,那么这里是大于号,降序,修改为小于号
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
PrintArray(arr);
}
}
static void PrintArray(int[] arr)
{
foreach (int num in arr)
{
Console.Write(num + " ");
}
Console.WriteLine();
}
// 测试数组
int[] arr = { 72, 54, 59, 30, 31, 78, 2, 77, 82, 72 };
// 调用冒泡排序方法,按照升序排序
BubbleSort(arr);
每一趟的排序结果
72 59 54 31 78 30 77 82 72 2
72 59 54 78 31 77 82 72 30 2
72 59 78 54 77 82 72 31 30 2
72 78 59 77 82 72 54 31 30 2
78 72 77 82 72 59 54 31 30 2
78 77 82 72 72 59 54 31 30 2
78 82 77 72 72 59 54 31 30 2
82 78 77 72 72 59 54 31 30 2
82 78 77 72 72 59 54 31 30 2
缺点:极端情况下,顺序如果都是逆序的情况,数据交换位置比较多,时间复杂度O(n^2)