(实验七查找.docVIP

  • 9
  • 0
  • 约6.91千字
  • 约 12页
  • 2017-02-01 发布于北京
  • 举报
(实验七查找

实验七 查找、排序的应用 一、实验目的 1、本实验可以使学生更进一步巩固各种查找和排序的基本知识。 2、学会比较各种排序与查找算法的优劣。 3、学会针对所给问题选用最适合的算法。 4、掌握利用常用的排序与选择算法的思想来解决一般问题的方法和技巧。 二、实验内容 [问题描述] [基本要求] [测试数据]   由学生依据软件工程的测试技术自己确定。 //姓名??? string?xingbei;???????????? //性别??? float?xuehao;????????????? //学号? float?chengji1,chengji2;?????? //成绩1,成绩2 float?zong;?????????????? //总分? }RecordType;? typedef?struct?//定义顺序表的结构? {?? ????RecordType??r[MAXSIZE?+1];?//存储顺序表的向量? 查找 顺序查找? 从表的一端开始逐个进行记录的关键字和给定值的比较。在这里从表尾开始并把下标为0的作为哨兵。? void?chaxun(SqList?ST)??//查询信息? {?? cout\n************************endl;?? cout~?(1)根据学号查询??? ~endl;?? cout~?(2)根据姓名查询??? ~endl;?? cout~?(3)根据性别查询??? ~endl;?? cout~?(4)退出?????? ?~endl;? ? cout\n************************endl;?if(m==1)? 顺序查找算法:? ??cout输入要查找的姓名endl;??? cinname;? ??for(int?i=0;iST.length;i++)??? {? ???if(name==ST.r[i].xingming)?? ??{? coutST.r[i].xuehao?? ST.r[i].xingming??? ST.r[i].xingbei??? ST.r[i].chengji1?? ST.r[i].chengji2?? ST.r[i].zongendl;? a=1; }? 排序 a.直接插入排序? ??每步将一个待排序的记录,按其关键码大小,插入到前面已经排好序的一组记录的适当位置上,直到记录全部插入为止。? ??//按学号排序,使用插入排序? ??void?inssort(recordlist?*?l)? { ?int?j;? ?for(int?i=2;i=l-length;i++)?? {? ??l-r[0].key=l-r[i].key;?? ?j=i-1;? ??while(l-r[0].keyl-r[j].key)??? {? ???l-r[j+1].key?=l-r[j].key;???? ?j=j-1;??? }? ??l-r[j+1].key=l-r[0].key;?? }?? ?for(int?m=1;m=l-length;m++)??? coutl-r[m].key??;?? coutendl;? }? b.冒泡排序 void?bubblesort(recordlist?*?l)? {? ?int?i,j,x;? ?int?change=TRUE;? ?for(i=1;i=l-length??change;++i)?? {? ??change=FALSE;? ??for(j=1;j=l-length-i;++j)? ??if(l-r[j].keyl-r[j+1].key)???? {? x=l-r[j].key;? l-r[j].key=l-r[j+1].key?????? l-r[j+1].key=x;????? change=TRUE;???? }?? }? ?for(int?m=1;m=l-length;m++)??? coutl-r[m].key?; coutendl;? } ? c.快速排序? int?qkpass(recordlist?*?l,int?left,int?right)? {? ?int?x=l-r[left].key;?? int?low=left;?? int?high=right;?? while(lowhigh)?? {? while(lowhigh??l-r[high].key?=x)???? high--;??? if(lowhigh)??? {? l-r[low].key?=l-r[high].key????? low++;?

文档评论(0)

1亿VIP精品文档

相关文档