求大神指教在这个程序中如何实现折半查找
#include<stdio.h>#include<malloc.h>
typedef struct student
{
int age;
char name[10];
float score;
}Stu;
Stu scanfbanji(Stu *,int);
void printfxinxi(Stu * pArr,int);
void sort(Stu * pArr, int len);
int main()
{
int len;
int n;
Stu * pArr;
printf("请输入学生的的个数:");
scanf("%d",&len);
pArr = (Stu *)malloc(sizeof(Stu) * len);
* pArr = scanfbanji( pArr,len);
printfxinxi( pArr,len);
printf("按分数从大到小的顺序为\n:");
sort(pArr, len);
printfxinxi( pArr,len);
return 0;
}
Stu scanfbanji(Stu* pArr,int len)
{
for(int i = 0;i<len; i ++)
{
printf("请输入第%d个学生的信息\n",i+1);
printf("age=");
scanf("%d",&pArr[i].age );
printf("name=");
scanf("%s",pArr[i].name );
printf("score=");
scanf("%f",&pArr[i].score );
}
return * pArr;
}
void printfxinxi(Stu * pArr, int len)
{
for(int i = 0;i<len; i ++)
{
printf("第%d的学生的信息是:",i+1);
printf("年龄:%d ",pArr[i].age);
printf("名字:%s ",pArr[i].name );
printf("分数:%f ",pArr[i].score );
printf("\n");
}
}
void sort(Stu * pArr, int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(pArr[j].score<pArr[j+1].score )
{
Stu t;
t = pArr[j];
pArr[j] = pArr[j+1];
pArr[j+1] = t;
}
}
}
}