实验七八 查找排序应用问题实现Word文档下载推荐.docx
《实验七八 查找排序应用问题实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验七八 查找排序应用问题实现Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
intnum;
//学号
charname[10];
//姓名
charcla[20];
//班级
intage;
//年龄
}Student;
typedefstructSqList//顺序表结构体的定义
StudentStu[MAXSIZE+1];
//定义一个存放学生信息的数组
}SqList;
//直接插入排序(班级优先)
voidInsertsort(SqList&
L))
{
inti,j;
for(i=2;
i<
=n;
++i)
if(strcmp(L.Stu[i].cla,L.Stu[i-1].cla)<
0)
{
L.Stu[0]=L.Stu[i];
for(j=i-1;
strcmp(L.Stu[0].cla,L.Stu[j].cla)<
0;
--j)
L.Stu[j+1]=L.Stu[j];
L.Stu[j+1]=L.Stu[0];
}
}
//选择排序(姓名优先)
voidSelectsort(SqList&
L)
Studentt;
inti,j,k;
for(i=1;
i++)
k=i;
for(j=i+1;
j<
j++)
if(strcmp(L.Stu[j].name,L.Stu[k].name)<
k=j;
if(k!
=i)
{
t=L.Stu[i];
L.Stu[i]=L.Stu[k];
L.Stu[k]=t;
}
}
//快速排序
voidQuicksort(SqListL,intlow,inthigh)
intlocation;
if(low<
high)
location=Partition(L,low,high);
Quicksort(L,low,location-1);
//对左区间递归排序
Quicksort(L,location+1,high);
//对右区间递归排序
}
}
//查找学生信息
voidfind(SqList&
L,intn)
intt,m=1;
cout<
<
"
请输入你要查找的学号:
endl;
cin>
>
t;
该学生的信息为:
while(m<
=n&
&
L.Stu[m].num!
=t)
m++;
if(L.Stu[m].num==t)
cout<
学号是:
L.Stu[m].num<
\t姓名:
L.Stu[m].name<
\t班级:
L.Stu[m].cla<
\t年龄:
L.Stu[m].age<
else
没有你要查找的学生!
㈡、程序调试及运行结果分析
4、实验总结
通过这次实验我理解掌握基本查找算法、排序算法的特点及在计算机中的实现方法。
在实验过程中,我运用所学的知识解决简单的应用问题,通过不断的修改程序来完善自己的不足之处。
只有这样,才能更快的进步。
5、程序清单
intn;
voidCreatInfo(SqList&
请输入你要创建的学生数:
n;
学生的信息:
姓名学号年龄班级:
for(inti=1;
i++)
cin>
L.Stu[i].name>
L.Stu[i].num>
L.Stu[i].age>
L.Stu[i].cla;
voidprint(SqList&
L)//输出顺序表
输出学生信息:
L.Stu[i].name<
"
L.Stu[i].num<
L.Stu[i].age<
L.Stu[i].cla<
L)//直接插入排序(班级优先)
intPartition(SqList&
L,inti,intj)//快速排序
Studentp;
L.Stu[0]=L.Stu[i];
p=L.Stu[i];
while(i<
j)
while(i<
j&
L.Stu[j].num>
=p.num)
j--;
L.Stu[i]=L.Stu[j];
i++;
L.Stu[j]=L.Stu[i];
L.Stu[i]=p;
returni;
voidQuicksort(SqListL,intlow,inthigh)//快速排序
voidSelectsort(SqList&
L)//选择排序(姓名优先)
L,intn)//查找学生信息
intmain()
{
SqListL;
intk;
CreatInfo(L);
//创建学生信息
print(L);
//按输入顺序打印出顺序表
loop:
请选择排序方式:
1插入排序(班级优先)"
2选择排序(姓名优先)"
3快速排序"
4按学号查找学生"
0退出排序程序"
cin>
k;
if(k!
=0)
{
switch(k)
{
case1:
Insertsort(L);
//进行插入排序
print(L);
break;
//输出插入排序后的顺序表
case2:
Selectsort(L);
//进行选择排序
print(L);
//输出排序后的顺序表
case3:
Quicksort(L,1,n);
//选择快速排序
case4:
find(L,n);
//查找学生信息
default:
cout<
输入错误!
gotoloop;
return0;