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

时间复杂度:

相关推荐
木井巳5 小时前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先
(Charon)5 小时前
【C++】手写 MySQL 连接池(三):异步任务队列与工作线程
c语言·c++
加油码6 小时前
共享内存详解:原理、系统调用与高性能进程间通信
linux·c语言·c++
Lzh编程小栈7 小时前
【STM32底层精讲】RCC时钟系统超全详解(时钟树+源码+避坑指南)
c语言·stm32·单片机·嵌入式硬件·面试
June`7 小时前
常量内存和只读缓存
c++·人工智能·算法·cuda
一条大祥脚7 小时前
ABC468 扫描线|贡献法|二阶差分|线段树优化DP
数据结构·算法
happyprince7 小时前
篇2-bitsandbytes-具体观-算法与实现剖析
算法
普通攻击往后拉17 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
Nebula嵌入式17 小时前
【C语言】09-深入解析main函数
linux·c语言·开发语言·嵌入式
@syh.18 小时前
【贪心】矩阵消除游戏
算法·游戏·矩阵