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

时间复杂度:

相关推荐
2401_87320465几秒前
C++中的策略模式进阶
开发语言·c++·算法
HABuo2 分钟前
【linux线程(一)】线程概念、线程控制详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
xushichao19895 分钟前
C++中的职责链模式实战
开发语言·c++·算法
大鹏说大话12 分钟前
数据库查询优化全攻略:从索引设计到架构演进
算法
小O的算法实验室13 分钟前
2025年IEEE TETCI SCI2区,一种用于二次无约束二进制优化的协同神经动力学算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
2301_8184190118 分钟前
C++中的协程编程
开发语言·c++·算法
add45a20 分钟前
C++中的工厂方法模式
开发语言·c++·算法
無限進步D28 分钟前
二分算法 cpp
算法
xushichao198929 分钟前
C++中的工厂模式高级应用
开发语言·c++·算法
2501_9249526937 分钟前
C++模块化编程指南
开发语言·c++·算法