码迷,mamicode.com
首页 > 编程语言 > 详细

成绩排序查找

时间:2014-11-15 23:03:59      阅读:429      评论:0      收藏:0      [点我收藏+]

标签:des   style   io   os   使用   sp   for   strong   数据   

西南科技大学

ACM解题报告

姓名:张艺童

学号:5120142109

组号:3

班级:软件1402

 

 

 

1 题目来源:OJ  0616

2 题目描述:

Description:

用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之间。排序完成后,输入一个成绩,要求用逐个比较查找的方式找出该成绩是该组中第几个元素的值(即第几名)。如果该成绩不在数组中,则输出“no this score!”。 要求: 1、把排序算法写成函数形式,在主函数中输入N个数据,然后调用排序函数排序。 2、在排序过程中尽量减少数据的交换和移动。 3、把查找算法写成函数形式,在主函数中输入1个数

Input:

输入共有三行:第一行是一个数N(N < 50),表示学生的人数; 第二行输入N个学生的成绩; 第三行输入一个数m(你要查找的成绩)

Otput:

第一行输出N个已经排好序的成绩,每两个成绩之间有一个空格隔开,每10个数据换一行(由大到小排列)。 第二行输出你要查找的成绩的名次(如果成绩相同,则并列)。具体的见Sample Output。

Sample iutput
1
2
3
4
5
6
7
15
23 32 43 54 65 65 78 87 98 87 76 76 76 55 65
87
 
23
32 43 54 89 89 78 89 78 55 65 76 87 87 87 65 65 89 86 65 78 54 57 54
86
Sample Onput
1
2
3
4
5
6
7
8
98 87 87 78 76 76 76 65 65 65
55 54 43 32 23
2
 
89 89 89 89 87 87 87 86 78 78
78 76 65 65 65 65 57 55 54 54
54 43 32
8

3 题目分析及知识点:

选择排序的正确使用,因为成绩可能会有几个人有相同成绩的情况,所以用二分查找是极有可能出错的,我选择了从数组的首元素开始比对查找的方式。这样会比较满足题目的要求。

4 AC源代码:

 

#include<stdio.h>

int main()
{
void select_sort(int a[],int n);
int find(int b[],int n,int key);
int n,a[50],m,s;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
select_sort(a,n);
for(int j=0;j<n-1;j++)
{
printf("%d",a[j]);
if((j+1)%10==0)
{
printf("\n");
}
else
printf(" ");

}
printf("%d\n",a[n-1]);

s=find(a,n,m);
if(s>0)
printf("%d\n",s);
else
printf("no this score!\n");
return 0;
}

void select_sort(int a[],int n)
{
register int i,j,max,t;
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<n;j++)
if(a[max]<a[j])
max=j;
if(max!=i)
{
t=a[max];
a[max]=a[i];
a[i]=t;
}
}
}


int find(int b[],int n,int key)
{
int g,k;
for( k=0;k<n;k++)
{
if(b[k]==key) break;
}
if(k<n-1)
g= k+1;
else
{
if (b[k]==key)
g= k+1;
else
g= -1;
}
return (g);
}

 

5 做题心得:

开始出现的问题就是用来二分查找,忽视了其他情况的出现,自己的运行都不对。

后来用另一种方式来查找之后,可解决这个问题。从这道题里我学会的是考虑所采用方法不可避免的弊端,是否与题目的要求冲突。如果冲突就要采取其他的方式。

成绩排序查找

标签:des   style   io   os   使用   sp   for   strong   数据   

原文地址:http://www.cnblogs.com/try-my-best/p/4100294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!