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

时间复杂度:

相关推荐
忆湫淮几秒前
ENVI 5.6 利用现场标准校准板计算地表反射率具体步骤
大数据·人工智能·算法
Ayanami_Reii3 分钟前
基础数据结构应用-一个简单的整数问题
数据结构·算法·树状数组·fenwick tree
脏脏a11 分钟前
【初阶数据结构】栈与队列:定义、核心操作与代码解析
c语言·开发语言
Ayanami_Reii16 分钟前
进阶数据结构应用-一个简单的整数问题2(Fenwick-Tree 解法)
数据结构·算法·前缀和·差分·树状数组·fenwick tree
老黄编程17 分钟前
点云生成深度图的原理及算法步骤和参数详细说明
数学·算法·点云·深度图
老黄编程21 分钟前
点云SIFT3D特征点云原理、算法描述及参数详细说明
算法·3d·sift3d
老黄编程24 分钟前
3DHarris特征提取算法描述及参数详细说明
数学·算法·几何·3dharris特征提取
C语言不精24 分钟前
一种在 ESP32-S3 上取巧的清晰度检测方案
c语言·stm32·嵌入式硬件·学习
fruge27 分钟前
技术面试复盘:高频算法题的前端实现思路(防抖、节流、深拷贝等)
前端·算法·面试
希望有朝一日能如愿以偿29 分钟前
力扣每日一题:使数组和能被p整除
数据结构·算法·leetcode