侧边栏壁纸
博主头像
曾高明要发光

千里之行、始于足下

  • 累计撰写 12 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

冒泡排序法(考研最容易考的,程序员必备技能)

曾高明要发光
2025-04-04 / 0 评论 / 0 点赞 / 23 阅读 / 828 字

冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的交换实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较……最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。
当然,除了从左向右交换的方案外,另外一种冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置"这一操作的算法,也就是从右往左交换。在这个过程中,数字会像泡泡一样,慢慢从右往左"浮"到序列的顶端,所以这个算法才被称为“冒泡排序”。
程序实现如下:

int *bubbleSort(int buf[],int bufsize)
{
    int temp=0;//为了临时存储交换值
    //只需要执行比较数组的大小-1次,
    for(int n=1;n<bufsize;++n)
    {
            //每轮需要比较m次
        for (int m = 0; m<bufsize-n; ++m)
        {
            //数组元素两两之间进行比较交换
            if(buf[m]>buf[m+1])
            {
                temp    =buf[m];//备份buf[m]
                buf[m]  =buf[m+1];//交换buf[m+1]与buf[m]的值
                buf[m+1]=temp;
            }
        }  
    } 
    return buf;//返回数组的首地址
}

int main(void)
{
    int buf[10]={12,25,11,5,56,32,14,66,23};            //定义一个无序的数组
    int *p = bubbleSort(buf,sizeof(buf)/sizeof(buf[0]));//向冒泡函数中传递数组的首地址和数组的大小
    for (int i = 0; i < sizeof(buf)/sizeof(buf[0]); i++)//输出显示排序后的数组
    {
        printf("%d\n",p[i]);
    }
    return 0;
}


运行结果:
image.png

0

评论区