实验报告五 查找(学科:数据结构 )
姓名 单位 班级 学号 实验日期
成绩评定 教师签名 批改日期
实验名称:实验五 查找
折半查找
【问题描述 】
某班学生成绩信息表中, 每个学生的记录已按平均成绩由高到低排好序, 后来发现某个学生
的成绩没有登记到信息表中, 使用折半查找法把该同学的记录插入到信息表中, 使信息表中的记录仍按平均成绩有序。
【基本信息 】
1) 建立现有学生信息表,平均成绩已有序。
2) 输入插入学生的记录信息。
3) 用折半查找找到插入位置,并插入记录。
测试数据 】
自行设计。
【实验提示 】
1) 用结构数组存储成绩信息表。
2) 对记录中的平均成绩进行折半查找。
实验报告内容 】
设计程序代码如下 :
#include<>
#include<>
#define N 5
struct student{
char name[10];
float avg;
}
void insort(struct student s[],int n)
{
int low,hight,mid,k;
char y[10];
float x;
low=1;
hight=n;
strcpy(y,s[0].name );
x=s[0].avg ;
while(low<=hight)
{
mid=(low+hight)/2;
if(x>s[mid].avg )
hight=mid-1;
else
low=mid+1;
}
for(k=0;k<low-1;k++){
strcpy(s[k].name,s[k+1].name) ;
s[k].avg =s[k+1].avg ;
}
printf("%d",low);
strcpy(s[low-1].name ,y) ;
s[low-1].avg =x;
}
void main()
{
Struct student a[N]=
{{"caozh",96},{"cheng",95},{"zhao",93},{"wang",92},{"chen",91}};
struct student stu[N];
int i;
for(i=0;i<N;i++)
stu[i+1]=a[i];
printf(" 初始 %d 位同学的信息表 \n",MAX);
printf(" 排名 姓名 平均分数 \n");
for(i=1;i<=N;i++)
printf("%d: %6s %\n",i,stu[i].name,stu[i].avg);
printf("\n");
printf("\n");
printf(" 请输入学生的姓名: ");
scanf("%s",stu[0].name );
printf("\n");
数据结构实验报告 来自淘豆网www.taodocs.com转载请标明出处.