经典排序算法之冒泡算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38022615/article/details/82182743

冒泡排序是一种典型的交换排序算法,通过交换数据元素的位置进行排序。

基本思想

两个数比较大小,较大的数下沉,较小的数冒起来。

算法步骤

1.比较相邻的元素。如果第一个比第二个大,就交换它们两个;
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3.针对所有的元素重复以上的步骤,除了最后一个;
4.重复步骤1~3,直到排序完成。

算法实现

/*********************************************************************************
 *      Copyright:  (C) 2018 Dinghuanhuan<[email protected]>
 *                  All rights reserved.
 *
 *       Filename:  bubbling.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(08/27/2018)
 *         Author:  Dinghuanhuan <[email protected]>
 *      ChangeLog:  1, Release initial version on "08/27/2018 02:20:00 PM"
 *                 
 ********************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void  bubbling(int buf[], int size);


int main(int argc, char **argv)
{
    int buf[]={3,10,1,60,80,30,20,10,70,50};

    int i,j;
    int temp,size,flag;
    size = sizeof(buf)/sizeof(int);

    printf("size :[%d]\n", size);
    for(i=0;i<size;i++)
    {
       printf("buf[%d]: %d\n",i,buf[i]);
    }

    bubbling(buf,size);
    for(i=0;i<size;i++)
    {
       printf("change_buf[%d]: %d\n",i,buf[i]);
    }

    return 0;
}


void  bubbling(int buf[],int size)
{
    int i,j;
    int temp;
    printf("begin bubbling\n");
    for(i=0;i<size-1;i++)
        for(j=0;j<size-1-i;j++)
       {
            if(buf[j]>buf[j+1])
            {
               temp     = buf[j];
               buf[j]   = buf[j+1];
               buf[j+1] = temp; 
            }
        }


}

现象

这里写图片描述

猜你喜欢

转载自blog.csdn.net/m0_38022615/article/details/82182743
今日推荐