冒泡排序是一种典型的交换排序算法,通过交换数据元素的位置进行排序。
基本思想
两个数比较大小,较大的数下沉,较小的数冒起来。
算法步骤
1.比较相邻的元素。如果第一个比第二个大,就交换它们两个;
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3.针对所有的元素重复以上的步骤,除了最后一个;
4.重复步骤1~3,直到排序完成。
算法实现
/*********************************************************************************
* Copyright: (C) 2018 Dinghuanhuan<736787419@qq.com>
* All rights reserved.
*
* Filename: bubbling.c
* Description: This file
*
* Version: 1.0.0(08/27/2018)
* Author: Dinghuanhuan <736787419@qq.com>
* 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;
}
}
}