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

更新时间:2023-12-13 06:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 信息的查找与排序

【实验目的】

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

以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。 示例运行界面:

本文来源:https://www.bwwdw.com/article/w2q5.html

Top