第03章 数组及其应用资料.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3.1 数组元素值的随机生成 例3-7 随机生成20个3位以内的整数序列存放在一维数组中,然后按每行5个数输出所有数组元素。 程序一次运行结果为: 659 100 184 135 876 348 934 293 587 338 179 243 523 799 653 234 657 439 776 297 3.3.1 数组元素值的随机生成 例3-8 编程序实现如图3.10所示的矩阵转置功能,即将N×M矩阵转换为M×N矩阵;要求被处理的二维数组元素值(2位数以内)随机产生。 矩阵转置 冒泡排序(一维数组的应用) ①从较待排序列中第一个位置开始,依次比较相邻两个位置上的记录,若是逆序则交换,一趟扫描后,关键字值最大(或最小)的记录则交换到了最右边; ②不考虑已排好序的记录,将剩下的记录作为待排序列;重复①、②两步直到排序完成; ③n个记录的排序最多进行n-1趟比较,在第1趟比较中要进行n-1次两两比较,在第i趟比较中要进行n-i次两两比较。 3.3.2 数组的常用排序方法 将6个数进行冒泡排序(以升序为例) 第一趟比较中,进行了5次比较:(最大数下沉) 5 5 5 5 5 5 6 6 2 2 2 2 2 2 6 6 6 6 9 9 9 9 9 9 10 10 10 10 10 3 3 3 3 3 3 10 1次 2次 3次 4次 5次 结果 3.3.2 数组的常用排序方法 余下5个数进行排序 第二趟比较中,进行了4次比较:(次大数下沉) 5 2 2 2 2 2 5 5 5 5 6 6 6 6 6 9 9 9 9 3 3 3 3 3 9 1次 2次 3次 4次 结果 3.3.2 数组的常用排序方法 例3-9 编程实现冒泡排序算法,对随机生成的20 个整数按升序排序并输出。 总结: n个数据的排序最多进行n-1趟比较,在第1趟比较中要进行n-1次两两比较,在第i趟比较中要进行n-i次两两比较。 3.3.2 数组的常用排序方法 选择排序(交换排序的优化) 假设具有n个元素的数组a中用a[0]存放最小(或最大)的数,将此数与后面所有的数比较并用下标变量k记录最小(或最大)数所在位置。一趟比较完成后,将a[0]与a[k]交换。 在剩下的N-1个数据 (即a[1]到a[n-1]的元素)中使用相同的方法寻找最大(或最小)的数,并将a[1]与a[k]交换;以此类推,直到将整个待排数据集合处理完。 例3-10 编程序实现选择排序算法,对随机生成的20个整数按升序进行排序并输出。 将6个数进行选择排序(定义a[6],i=0~5) 在a[0]到a[5]数组元素中找最小数 a[0] a[1] a[2] a[3] a[4] a[5] 5 6 2 9 10 3 3.3.2 数组的常用排序方法 把k更新为2记下较小数下标 ①a[0]与a[2]交换后, a[0]中已是最小数2 在余下a[1]到a[5]数组元素中又找最小数 a[1] a[2] a[3] a[4] a[5] 6 5 9 10 3 ②将a[1]与a[5]交换 K更新为5 5 5 6 2 3 6 令k=i=0 令k=i=1 K更新为2 判断k==i?相等则a[0]中就是最小数,不相等则交换a[0]与a[k]值,以保证a[0]中存放序列的最小数。 3.3.3 数组的常用查找方法 顺序查找(线性查找) 从数组首元素或最后一个元素开始,往后或往前顺序比较每一个数组元素值是否等于查找关键字;如果找到相符合的元素值,则查找成功,否则,查找失败。顺序查找适应于被查找集合无序的场合。 例3-11 编程序实现顺序查找算法,在随机生成的20个整数中查找指定值,要求程序能够显示出查找进行比较的次数以及本次查找成功与否。 3

文档评论(0)

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

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

1亿VIP精品文档

相关文档