#include<stdio.h>
int main()
{
int a[100],i,j,t,n;
scanf("%d",&n); //输入一个数,表示有n个数需要排列
for(i = 1; i<=n; i++) //输入数组中的数
{
scanf("%d",&a[i]);
}
for(i = 1;i<=n-1;i++) //n个数排序需要n-1趟
{
for(j=1;j<=n-i;j++) //从第一位开始比较直到最后一位尚未归位的数
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<=n;i++) //输出排序结果
{
printf("%d ",a[i]);
}
getchar();getchar();
return 0;
}
用冒泡排序实现考试名次的排序
#include<stdio.h>
int main()
{
struct student
{
char name[21];
char score;
}; //创建结构体存储姓名和分数
struct student a[100],t;
int i,j,n;
scanf("%d",&n);
for(i = 1; i<=n; i++) //循环输入n个人名和分数
{
scanf("%s %d",a[i].name,&a[i].score);
}
for(i = 1;i<=n-1;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j].score<a[j+1].score)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("成绩排名是\n");
for(i=1;i<=n;i++)
{
printf("%s\n ",a[i].name);
}
getchar();getchar();
return 0;
}
冒泡排序的核心是双重循环嵌套,将n个数进行排序,将n-1个数进行归位。