冒泡排序(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;
            }
        }
    }
}

时间复杂度:

相关推荐
!停36 分钟前
C语言顺序表
c语言·开发语言
一条大祥脚1 小时前
26.1.1
数据结构·算法
csuzhucong1 小时前
圆柱三阶魔方、六棱柱魔方
算法
mit6.8241 小时前
vector<int> dfs
算法
ullio3 小时前
div1+2. 2178F - Conquer or of Forest
算法
Leweslyh3 小时前
制导算法开发实践指南:从入门到精通
算法·开发·武器·制导律设计
chushiyunen3 小时前
快慢双指针算法笔记
数据结构·笔记·算法
枫叶丹43 小时前
【Qt开发】Qt系统(二)-> 事件分发器
c语言·开发语言·数据库·c++·qt·系统架构
烟锁池塘柳03 小时前
一文总结模型压缩技术:剪枝、量化与蒸馏的原理、实践与工程思考
算法·机器学习·剪枝