利用数组实现算法分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用数组实现算法分析

利用数组实现算法分析 某些算法和字符串操作常利用数组实现。例如求最大(小)值、排序、数字拆分、字符串操作(连接、长度、合并、回文、插入、删除、反序、排序、单词分割等)。 1. 编程,任意输入10个人的成绩,按从大到小的顺序排列。运行程序时,只要输入名次,计算机就能输出该名次对应的成绩。 输入: 4,7,3,6,1,5,12,0,23,51 输入: 4 输出: The 4th is 6 分析:用选择法排序。第n名是a[n-1]。 2. 编程,输入10个整数及其序号,求出10个整数的最大值、次大值、最小值和次小值,并输出它们原来输入时的序号。 输入:1,15 2.11 3,0 4,7 5,1 6,5 7,7 8,40 9,2 10,23 输出:8: 40 10: 23 3: 0 5: 1 分析:用选择法排序。a[j][0]--序号,a[j][1]--成绩。交换时a[j][0]、a[j][1]一起交换。前两名和后两名即为所求。也可以分两次求最大、最小值,但不如排序法简单。 3. 编程,输入10个整数,输入要查找的整数,然后进行查找。若找到,则输出该数在数组中的下标位置,否则输出“can not found!”。 输入:12 23 43 21 56 7 9 4 33 67(a数组的内容) 56(要找的数) 输出:56=a[4] 65(要找的数) 输出:65 can not found! 分析:用数组存放10个整数,对10个整数循环,输出找到的整数及其在数组中的下标。 4.编程,输入一个字符串并删除其中的指定字符。例如,对于字符串abcdcf,指定删除c,则结果为:abdf。 结果:输入:abcdcf和c 输出:abdf 分析:输入一个字符串s和要删除的字符ch,从字符串首开始逐个字符检查,每遇ch则将后面的字符向前移动一个位置覆盖要删字符ch(参考例7-16中删除数组元素的方法). 5. 编程,输入一行字符,将其反序后再输出。 输入: abcdefg 输出:gfedcba 分析:输入n个字符到a数组,a[j]与a[n-j-1]互换(j=0,1,2,…,n/2-1)。(参考例7-3) 6. 编程,输入两个字符串,将两个字符串合并为一个新的从小到大排列字符串并输出。 输入:13579 24acf 输出:1234579acf 分析:先将两个字符串合并成一个字符串,然后按从小到大排序。 7. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入。输出最长的字符串。 输入:china Beijing Chongqing Shanhai 输出:Chongqing 分析:用循环输入各字符串并求其长度,找最大长度并输出相应字符串。输入空串(长度为0)时结束循环。 8.任意输入一个4位自然数,输出该自然数的各位数字组成的最大数。例如,输入1593,则输出为9531。 结果:输入:1593 输出:9531 分析:将4位数的各位数字存入数组,然后对数组进行从大到小排序,再组成新的4位数: a[0]*1000+a[1]*100+a[2]*10+a[3] 9. 编程,将输入的两行字符串连接后,将新串中全部空格移到串首后输出。 输入:bei jing ch i na 输出: beijingchina 分析:两行字符串先连接,然后扫描整个字符串,若当前字符s1[i]是空格,则进行移位,s1[i-1]~s1[0]向后移动一个位置,s1[i]被覆盖,被删空格放在串首s1[0]。 再继续扫描,直到串尾。 10. 编程,将任一正整数转换为二进制形式。 结果:输入:144 输出:n(10)=144 n(2)=1 0 0 1 0 0 0 0 分析:用除2取余数的方法化2进制,用数组存放2进制各位数字。 11. 编程,找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。 ⑴ 输入 n=4,m=4 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 输出: 鞍点为a[0][3]=4。 分析:找出i行最大值所在的列号k(i=0,1,…,n), 若a[i][k]是k列最小,则a[i][k]是鞍点。也可能没有鞍点。 12. 用空格或换行分开的字符串称为单词。输入多个字符串,直到遇到了单词stop时才停止。最后输出单词的数量。 结果:

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档