第6章 数组-数据的查找与排序

2020-02-22 14:08

实验二 信息的查找与排序

【实验目的】

熟练掌握基本的排序算法,掌握数组的基本查找方法:顺序法和折半查找法。 【实验内容】

以6_2.c命名本程序并上交。

数据文件studentlist.txt中存放有21名学生的学号与成绩,数据已按学号升序排序。studentlist.txt的内容如下图:

从数据文件studentlist.txt中读出21名学生的学号与成绩到学号数组与成绩数组中,显示这21名学生的成绩到屏幕。

输入一个要查找的学生学号,找到了,输出该学生的成绩,找不到,显示No find。 要求使用折半查找算法按学号查找。

最后按成绩降序排序输出所有数据

【实验提示】

对信息排序时,通常只使用信息的一个子项作为排序键值(Key Value),如开始的学号就是排序键。当待查找的信息有序排列时,折半查找比顺序查找效率要高非常多。本题最后是用成绩做为排序键对信息进行排序。

查找是计算机中经常要遇到的一种操作,其含义是在一组数据中查找到所查数据的位置。比较简单的是顺序查找法,效率较高的是折半查找法。 1.顺序查找法

顺序查找也叫线性查找,当一组数据无序时,一般采用顺序查找。其基本思想是:从数据集的第一个元素开始,依次将关键字x与数据集中的每一个元素进行比较,直到找到要找的数据。或者数据集遍历完毕,没有找到匹配元素。 2.折半查找法

若是已经排好序的数据,可使用效率更高的折半查找法。折半查找法的基本思想是:首先取第一个元素a[low]和最后一个元素a[high]中间的那个元素a[mid]与查找键x比较(其中mid=(low+high)/2 ),如果a[mid]==x则正好找到,获得找到的数据下标;否则要看x比a [mid]大还是小,因数组a已按升序排好,则当xa[mid]时,则要查找的x在数组的后半部分,查找范围缩小为一半。然后在缩小的区间内再找一个中点,与x比较,如此一半一半缩小,重复这样的查找过程,如果x在数组当中,终能找到x==a[mid]。 由于每次缩小近一半的范围,所以数组的上、下界是要变化的,不妨用变量low、high、mid分别表示数组当前的上界、下界和中点。 问题:如果x不在数组当中,最终怎样判别并结束循环? 【实现方案】

由于学号是11位数字,而C语言中整数最大只能有10位数,所以学号数据不能以整型存储,需要用字符串来表示学号。本题中学号可以定义二维数据char num[21][13]来存,

成绩需要定义一维数组int score[21]。

本题是多字符串数据的访问操作。 文件读写以使用

pr=fopen(\磁盘:\\\\文件夹\\\\studentlist.txt\ //打开指定文件

if(pr==NULL) //检查打开文件是否成功 {

puts(\ return 0; }

for(i=0;i

实验三 子串删除

【实验目的】

熟练掌握字符串遍历,子串的查找与删除。 【实验内容】

以6_2.c命名本程序并上交。

键盘输入母串s1与子串s2,删除s1中所有的子串s2。 示例运行界面:


第6章 数组-数据的查找与排序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙江省瑞安市2014届初三第一次模拟考试语文试卷(word版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: