#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)//共执行n-1遍
{
for(j=0;j<n-1-i;j++)//每次从0开始执行到n-1-j
{
if(a[j]>a[j+1])//把a[j]和a[j+1]比较,如果a[j]>a[j+1],就让a[j+1]冒出来
{
t=a[j];//将a[j]和a[j+1]交换
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main()
{
int n;
int a[1025];
scanf("%d",&n);//共有n个元素待排序
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,n);//调用sort函数
for(i=0;i<n-1;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[i]);
}
要理解冒泡排序的思想,第一层循环是执行n-1遍之意,第二层循环标示从0到n-1-i(因为最后i个元素已经比较结束,必定已经是最大的)每两个相邻的元素比较,如果较大的在前面,则作交换。特别应注意第二层循环的范围。