您的位置:首页 > 其它

第15周 啊哈算法 冒泡排序算法

2016-07-07 11:14 246 查看
1、问题及代码:

/*冒泡排序:邻居互换,进行n-1趟,每趟比较n-i次*/
#include<stdio.h>

int main()
{
int a[1000];
int i,j,n,t;

scanf("%d",&n); //输入一个数n,表示接下来有n个数
for(i=1;i<=n;i++)
scanf("%d",&a[i]);

for(i=1;i<=n-1;i++) //n个数排序,进行n-1趟,比如3和2只走完一趟。
{
for(j=1;j<=n-i;j++) //每趟比较n-i次
{
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;
}


2、

/*功能:对分数排序,按顺序输出学生姓名*/
#include<stdio.h>
struct student
{
char name[20];
char score;
};//存储姓名和分数的结构体
int main()
{
struct student a[100],t;
int i,j,n;

scanf("%d",&n);//输入一个数n,表示学生的人数
for(i=1;i<=n;i++)
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].score进行转换,而是结构内所有元素的置换
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<=n;i++)
printf("%s",a[i].name);
getchar();getchar(); //暂停程序
return 0;
}


第2道题:之所以i=1,而不是0,是为了与for循环匹配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: