数据结构-冒泡排序算法

1、冒泡排序

冒泡排序之所以叫冒泡排序,是因为它每一种元素都像小气泡一样根据自身大小一点一点往数组的一侧移动。

基本思想是假如需要排序的数组元素有n个,则进行n-1轮比较,第K轮比较中元素的比较次数为n-k次,算法的复杂度准确界为O(n2)

算法步骤如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个;

  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数;

  3. 针对所有的元素重复以上的步骤,除了最后一个;

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

复制代码
#include <stdio.h>

void Bubble(int* p, int n)
{
    int temp, flag = 1;
    flag = 1;   //标志位,如果已经完成排序,则不用再进行循环比较
    for (int i = 0; (i < n - 1)&&(flag); i++) //如果flag=0,则说明已经完成
    {
        flag = 0;
        for (int j = 0; j < n - i-1; j++)
        {
            if (p[j] > p[j + 1])
            {
                temp = p[j];
                p[j] = p[j + 1];
                p[j + 1] = temp;
                flag = 1;   //说明出现调换,更改标志位
            }
        }
    }
}

int main()
{
    int a[] = { 4,2,5,6,7,8,3,1,9 };
    Bubble(a,9);
    printf_s("冒泡排序后:\n");
    for (int i = 0; i < 9; i++)
    {
        printf_s("%d ", a[i]);
    }

    return 1;
}
复制代码

 

posted @   kkzhang  阅读(910)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示