冒泡排序(C语言)

cpp 复制代码
void BubbleSort(int arr[], int len)
{
    int i, j, temp;
    for (i = 0; i < len; i++)
    {
        for (j = len - 1; j >= i; j--)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

优化:

设置标志位flag,如果发生了交换flag设置为true(1);如果没有交换就设置为false(0)。

这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。

cpp 复制代码
void BubbleSort(int arr[], int len)
{
    int i, j, temp, flag = 1;
    for (i = 0; i < len && flag; i++)
    {
        flag = 0;
        for (j = len - 1; j >= i; j--)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                flag = 1;
            }
        }
    }
}

时间复杂度:

相关推荐
炽烈小老头4 分钟前
【每天学习一点算法 2025/12/18】对称二叉树
学习·算法
User_芊芊君子9 分钟前
【LeetCode经典题解】:二叉树转字符串递归解法的核心逻辑与代码解剖
算法·leetcode·职场和发展
程序员zgh12 分钟前
C++常用设计模式
c语言·数据结构·c++·设计模式
橘颂TA14 分钟前
【剑斩OFFER】算法的暴力美学——计算右侧小于当前元素的个数
算法·leetcode·排序算法·职业发展
TechNomad16 分钟前
排序算法:选择排序法
排序算法
鹿角片ljp16 分钟前
力扣110.平衡二叉树-递归
数据结构·算法·leetcode
TL滕17 分钟前
从0开始学算法——第十九天(并查集练习)
笔记·学习·算法
im_AMBER17 分钟前
Leetcode 80 统计一个数组中好对子的数目
数据结构·c++·笔记·学习·算法·leetcode
少许极端17 分钟前
算法奇妙屋(十九)-子序列问题(动态规划)
java·数据结构·算法·动态规划·子序列问题
TechNomad18 分钟前
排序算法:冒泡排序法
排序算法