排序算法——冒泡排序(冒泡排序公式)

// 冒泡排序的方法
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)

原文链接:,转发请注明来源!