冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

#include <stdio.h>
#define N 10
void Bubble_Sort(int *a, int n); //函数声明
int main(int argc, char** argv)
{
int i;
int a[N];
//输入数据
printf("请为需排序数组输入数据:\n");
for(i=0; i<N; i++)
{
scanf("%d",&a[i]);
}
//排序
Bubble_Sort(a,N);
//输出排序后数据
for(i=0; i<N; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
/*
Bubble_Sort:冒泡排序
@a:数组名
@n:数组元素个数
返回值类型: void
*/
void Bubble_Sort(int *a, int n)
{
int i, j;
int flag;
//排序趟数
for(i=0; i<n-1; i++)
{
flag = 1;
//每趟遍历元素
for(j=0; j<n-i-1; j++)
{
//升序排列,相邻元素前者大则交换位置
if(a[j]>a[j+1])
{
flag = 0;
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
//如果该趟没有再发生交换,则说明该组元素已然有序
//无需再进行后续遍历,可直接退出循环
if(flag)
{
break;
}
}
}