网站大量收购独家精品文档,联系QQ:2885784924

第七章 实用程序设计.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章实用程序设计整理

串操作指令的重复前缀 REP ;CX-1→≠0则重复,直到CX=0为止 ;ECX-1→≠0则重复,直到ECX=0为止 REPE/REPZ ; CX-1→≠0且ZF=1则重复,直到CX=0或ZF=0为止 ; ECX-1→≠0且ZF=1则重复,直到ECX=0或ZF=0为止 REPNE/REPNZ ; CX-1→≠0且ZF=0则重复,直到CX=0或ZF=1为止 ; ECX-1→≠0且ZF=0则重复,直到ECX=0或ZF=1为止 * * 7.3 串操作指令与加密解密程序 7.1 线性表的检索程序 第七章 实用程序设计 7.2 排序程序 ● 顺序检索 ● 二分法检索 ● 分块检索 ① 要求线性表分成若干块,块与块之间必须排序 ② 建立块的索引表 ③ 检索时分两步:先在索引表中查找,再到相应 块中顺序检索 7.1 线性表的检索程序 检索:就是在数据结构中查找满足某种条件的记录。常用的方法有: 顺序检索:就是用待查的关键字与表中各记录的关键字逐个比较,直到找到满足条件的记录则检索成功,或找遍所有记录均不满足条件则检索失败。 例7.1 在表中查找某字符关键字,如果查到,记录该关键字出现在表中的第几项,否则用不同于表中元素的值(例如-1)作为标志。表中的每一个记录占四个字节,关键字占一个字节,其他信息占三个字节。 分析 要定义表,表长,记录检索结果的标志以及提示信息。 每个记录占四个字节,所以每比较一个记录指针加4。 是 记录位置SI/4→FLAG 是 否 CX=0 否 输入要查询的关键字→AL,表TAB地址指针→SI,记录数→CX TAB[SI]=AL 地址指针SI+4→SI,计数CX-1→CX 设置标志-1→FLAG 输出结果 开始 结束 二分法检索 :首先用要检索的关键字与中间位置的记录的关键字值比较,这个中间记录把线性表分成了两个子表,比较结果如果相等则检索完成,否则再根据要检索的关键字与中间记录关键字的大小确定下一步检索在哪个子表中进行。这样递归进行下去,直到找到满足条件的记录,或者确定表中没有这样的记录。 要求检索前表中记录已经按关键字的大小排序 例7.2 用二分查找法编制查找字符表中某个字符的程序 分析 定义表,表长以及检索结果的信息。 两个指针分别指向子表的首和尾,确定子表范围 首指针大于尾指针表示检索失败 例如字符表为‘ABCDEFG’,SI、DI和BX分别指向子表首、尾和中间,查询字符‘C’的情况为 G F E D C B A ← SI ← DI ← BX ①‘C’[BX] G F E D C B A ← SI ← DI ← BX G F E D C B A ← SI,DI,BX ②‘C’[BX] ③‘C’=[BX] 修改尾指针 修改首指针 否 否 AL[BX] 是 是 是 否 输入待查找的字符→AL 表首址→SI,表尾址→DI SI≤DI 置标志-1→FLAG 中间字符地址→BX AL=[BX] 字符地址→FLAG 输出结果 结束 BX-1→DI BX+1→SI 开始 修改子表尾指针 修改子表首指针 插入排序 每步将一个待排序的记录,按其排序码值的大小插到前面已经排序的表中适当位置,直到全部插入为止。 选择排序 每步从待排序的记录中选出排序码最小的记录,顺序放在已排序的记录序列的最后,直到全部排完。 7.2 排序程序 排序: 就是将记录按排序码不增或不减的次序排列起来。常用的方法有: 交换排序 两两比较待排序记录的排序码,并交换不满足顺序要求的偶对,直到全部满足为止。 归并排序 把待排序的表分成若干个子表,每个子表内的记录是排序的,将这些已排序的子表进行合并,得到完全排序的表。 分析 本例选用交换排序中的一种冒泡排序 先比较第1个数和第2个数,如果第1个数大于第2个数,则两数交换,否则不交换;然后比较第2个数和第3个数,按同样规则决定是否交换,重复此过程直到处理完第n-1个数和第n个数。这样n-1次比较和交换的过程称为一次冒泡,这一步将最大的数传到最后一个位置。 在一次冒泡中,用一个标志表示本次冒泡是否有交换,如果没有则表示已经达到排序要求,可停止处理,否则重复执行冒泡过程。 例7.3 编写将字数组ARRAY中的n个数据,按递增顺序排列在原数组中的程序SORT.ASM。 例如待排序的数据为8,2,1,5,0, 其冒泡排

文档评论(0)

chenchena + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档