- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 电子科技大学计算机学院 例4.10 折半查找 有7个数已经按从小到大的顺序存储在数组中,输入一个数,用折半查找法查找这个数是否在数组中,如果在,输出其下标,如果不在,输出0。数组的下标i表示第i个元素,数组的下标0处不存储数。 算法思路:折半查找又称对分查找,是对有序表进行的一种查找。 其基本思想是:先确定待查找的数据元素的范围,然后逐步缩小范围直到找到要查找的数据元素或无法找到该元素为止。 具体思路是:最初待查找的数据元素的范围是整个数组,找到数据元素范围的“中间元素”,将其与待查找的元素x比较,如果当前元素的值与给定值x相等,则查找成功;如果当前元素小于给定值x,则说明被查找数必在前半区间内;反之则在后半区间内。这样把查找区间缩小了一半,继续进行查找。 程序见4-10.cpp * 电子科技大学计算机学院 例4.11 用直接插入排序法对7个整数按从小到大的顺序排序。 算法分析:直接插入排序法是最简单的排序方法之一,它的基本操作是将—个元素插入到已排好序的序列中,从而得到一个新的、元素个数增l的有序序列。 序列{21,25,49,26,18,8,31}进行排序的过程 * 电子科技大学计算机学院 例4.12 输入同学录中40位同学的信息。然后输入一个字符串,查找姓名为这个字符串的所有同学的位置,如果成功,则输出存储这些同学的生日,否则输出查询不成功的信息。本例希望能进行模糊查找,即可以只输入姓名的一部分来进行查找。 算法分析:本例希望进行模糊查找,比如可以只输入姓或名来查找相应的同学的信息,因此,即便同学的信息已按姓名排序,也无法使用折半查找,只能使用顺序查找。 因为要进行模糊查找,因此不能直接比较同学的姓名与输入的字符串相等,而要使用字符串的查找函数strstr(字符串1, 字符串2),它用于查找字符串2是否在字符串1中,如果不在,则返回NULL(其值0)。 因此这个例子的主要算法是:用一个结构数组stu存储同学的信息,结构的定义与例4.5相同。存储时,数组元素stu[I]存储第I位同学的信息,stu[0]不存储同学信息。 在输入同学的信息后,输入要查找的字符串,再将监视哨stu[0].name置为输入的字符串,然后从数组尾部向前依次比较,如果待查找的字符串在当前同学的姓名中,则输出当前同学的生日。 * 电子科技大学计算机学院 例4.13 输入同学录中40位同学的信息,并在输入的同时对这些同学的信息按姓名排序,使得最终得到按姓名从小到大顺序排列的各位同学的信息。 算法分析: 要在输入的同时排序,其算法类似于直接插入排序,即前i个同学的信息存储好后,要加入第i+1个同学的信息,只需从第i个同学开始依次向前查找,将第i+1位同学的信息放置在合适的地方。 与前面例4.7不同之处在于,例4.7中数组元素为整型,因此排序时比较的是整型数,而这个例子中,要比较的是同学的姓名,这就不能使用==来比较,而应使用C的库函数strcmp来进行比较。当然,在顺序查找之前,本例也需设置监视哨为stu[0]。 * 电子科技大学计算机学院 第四章 小结 1. 数组是一个顺序排列的有相同类型的若干个元素的集合,用于描述同一种类型的数据的集合,属于构造类型的数据结构。 2. 数组的所有元素均按行主序方式存放在一个连续的存储空间中,数组名就是这个存储空间的首地址(即第一个元素的存放地址)的符号地址。 3. 下标访问这是常见的数组访问方法。 4. 定义数组时需要有确定的空间大小,因此,在定义时必须用常量表达式来定义数组元素的个数。个数一经确定,在程序中不得更改。 5. 在C语言中,数组的下标是从0开始,最后一个下标是数组的长度减1。在使用时,数组下标不能超过这个范围,否则会出现数组越界错误。而这种错误C的编译器并不报告,因此更要当心。 * 电子科技大学计算机学院 第四章 小结 10.结构在使用时,一般是先定义结构类型,再用这个类型来定义和初始化结构变量。 11.结构变量的每个成员都有自己独立的存储空间,所有成员连续存放。 12.除了赋初值外,不能将结构类型常量直接赋给某结构变量,但可以将某结构变量直接赋给另一个结构变量,在对结构变量进行输入输出时,必须通过对结构变量的各成员的访问来进行。可以使用点(.)操作符来引用结构的某个成员。 13.元素类型为结构的数组称为结构数组,在实际的程序设计中,单个结构变量的用处不大,一般使用结构数组来描述顺序存储的包含多种信息的序列,如多个学生的信息等。 * 1.2.1-4 * 电子科技大学计算机学院 4.3 字符数组 存放字符的数组称为字符数组, 每个元素为一个字符, 一个一维数组可以存放一个字符串. 4.3.1 定义和初始化 char str[10]
文档评论(0)