资源描述:
《利用数组实现算法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用数组实现算法分析某些算法和字符串操作常利用数组实现。例如求最大(小)值、排序、数字拆分、字符串操作(连接、长度、合并、回文、插入、删除、反序、排序、单词分割等)。1.编程,任意输入10个人的成绩,按从大到小的顺序排列。运行程序时,只要输入名次,计算机就能输出该名次对应的成绩。输入:4,7,3,6,1,5,12,0,23,51输入:4输出:The4this6分析:用选择法排序。第n名是a[n-1]。2.编程,输入10个整数及其序号,求出10个整数的最大值、次大值、最小值和次小值,并输出它们原来输入时的序号。输入:1,152.113,04,
2、75,16,57,78,409,210,23输出:8:4010:233:05:1分析:用选择法排序。a[j][0]--序号,a[j][1]--成绩。交换时a[j][0]、a[j][1]一起交换。前两名和后两名即为所求。也可以分两次求最大、最小值,但不如排序法简单。3.编程,输入10个整数,输入要查找的整数,然后进行查找。若找到,则输出该数在数组中的下标位置,否则输出“cannotfound!”。输入:12234321567943367(a数组的内容)56(要找的数)输出:56=a[4]65(要找的数)输出:65cannotfound!分析:
3、用数组存放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,
4、…,n/2-1)。(参考例7-3)6.编程,输入两个字符串,将两个字符串合并为一个新的从小到大排列字符串并输出。输入:1357924acf输出:1234579acf分析:先将两个字符串合并成一个字符串,然后按从小到大排序。7.编程,输入若干个字符串,当输入字符串的长度为0时停止输入。输出最长的字符串。输入:chinaBeijingChongqingShanhai输出:Chongqing分析:用循环输入各字符串并求其长度,找最大长度并输出相应字符串。输入空串(长度为0)时结束循环。8.任意输入一个4位自然数,输出该自然数的各位数字组成的最大数
5、。例如,输入1593,则输出为9531。结果:输入:1593输出:9531分析:将4位数的各位数字存入数组,然后对数组进行从大到小排序,再组成新的4位数:a[0]*1000+a[1]*100+a[2]*10+a[3]9.编程,将输入的两行字符串连接后,将新串中全部空格移到串首后输出。输入:beijingchina输出:beijingchina分析:两行字符串先连接,然后扫描整个字符串,若当前字符s1[i]是空格,则进行移位,s1[i-1]~s1[0]向后移动一个位置,s1[i]被覆盖,被删空格放在串首s1[0]。再继续扫描,直到串尾。10.
6、编程,将任一正整数转换为二进制形式。结果:输入:144输出:n(10)=144n(2)=10010000分析:用除2取余数的方法化2进制,用数组存放2进制各位数字。11.编程,找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。⑴输入n=4,m=41234555555555555输出:鞍点为a[0][3]=4。分析:找出i行最大值所在的列号k(i=0,1,…,n),若a[i][k]是k列最小,则a[i][k]是鞍点。也可能没有鞍点。12.用空格或换行分开的字符串称为单词。输入多个字符串,直到
7、遇到了单词"stop"时才停止。最后输出单词的数量。结果:输入:chinaabc123bstopstop输出:nw=5分析:连续输入若干行字符,用inword(初值为0)表示单词的开始或结束(=1,开始,=0,结束)。读入空格或换行时,表示单词结束,令inword=0(若该单词是“stop”,则结束输入)。读入非空格或非换行时,若inword=0,则该字符是单词的起始字符,令inword=1,单词计数器加1(nw++;)将该字符存入s数组(以便判断它是否stop)。若inword不为0,则该字符是单词的一个字符,继续将该字符存入s数组。13
8、.编程,输入字符串,输出字符串中每个字符所出现的次数。如:输入字符串:abcedabcdcd则输出:a=2b=2c=3d=3e=1结果:输入:abcedabcdcd输出:a=2b