ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:71KB ,
资源ID:8252987      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8252987.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(希尔法排序.doc)为本站会员(11xg27ws)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

希尔法排序.doc

1、希尔法排序 1、输入 n 个数到 a(n),用希尔法对 a(n)进行从大到小的排序。算法:(1) 建立数组 a(n)(2) 取初始增量 d=int(n/2);(3) 从第一个数开始,把相隔为 d 的数分为一组,对每一组用插入法排序(4) 取增量为上一个增量的一半 d=int(d/2);(5) 判断:若 d0 则完成排序,输出结果;否则转(3)。CLSDATA 48,36,65,99,74,42,48,31,92,5INPUT “n=“; nDIM a(n)FOR i = 1 TO n: READ a(i): NEXT iPRINT “paixuqian:“;FOR i = : NEXT i:

2、PRINTd = INT(n / 2)WHILE d = 1FOR i = d + 1 TO n STEP da(0) = a(i): j = i - dWHILE a(0) 30 THEN flag1 = 1FOR i = 1 TO ly$ = MID$(x$, i, 1)IF y$ “9“ THEN flag2 = 1NEXT iLOOP UNTIL flag1 = 0 AND flag2 = 0FOR i = 1 TO ly$ = MID$(x$, i, 1): a(VAL(y$) = a(VAL(y$) + 1NEXT ii = 1WHILE a(i) = 0i = i + 1WEND

3、PRINT LTRIM$(STR$(i); : a(i) = a(i) - 1FOR j = 0 TO 9IF a(j) 0 THEN FOR k = : NEXT kNEXT jPRINTEND灵活的字符串3、第十三界世界杯足球赛进入前八名的国家有:ARGENTINE(阿根廷) ENGLAND(英格兰) SPAIN(西班牙) BELGIUM(比利时) GERMANY(德国) MEXICO(墨西哥 ) FRANCE(法国) BRAZIL(巴西)这八个国家的英文名称藏在如下一个字块中:A M U I G L E B PP R W Y U V W R QW V G S T E X A RQ N Q

4、 E C Y M Z YH O R N N Z E I NW P A G L T X L A 需要设计一个程序查找这八个国名的第一个字J R M L K J I L M 母所在的行、列号以及字母走向。字母走向规定为F S P A I N C N R 八个方向,分别用八个字符串加以标注,如下图 1,A K W N G F O I E 在打印查找结果时,需按国名字符串的先后顺序来B P J D C D E H G 输出查找结果。输出格式规定为: NAME(国名) ROW(行) COL(列) DIRECTION(走向)ARGENTINE 1 1 DOWNRIGHTBELGIUM 1 8 LEFT算法

5、分析: (1) 建立数组 a$(8),b$(11), c$(8),m1(8), m2(8)。(2) 对数组 s$进行从小到大的排序。(3) 循环:k 从 1 到 8,反复执行:循环:从字块的(i,j+1)对应位置上查找第 k 个国家的字符;(i=1,2,10;j=1,2,9)若 mid$(b$(i),j+1,1)=mid$(a$(k),l,1)则循环:从八个方向(l1,2,8),搜索 a$(k)h 记录搜索的字符串长度,i1 和 j1 记录在某一搜索方向的下标若 hlen(a$(k)则匹配成功,输出首字符位置(i,j)和字母走向 c$(k).否则,若 mid$(b$(i1),j1,1) a$(

6、j) THEN SWAP a$(i), a$(j)NEXT j, iFOR k = 1 TO 8FOR i = 1 TO 10FOR j = 1 TO 9IF MID$(b$(i), j + 1, 1) = MID$(a$(k), 1, 1) THENFOR l = 1 TO 8h = 1: i1 = i: j1 = j + 1WHILE h LEN(a$(k) THENPRINT a$(k); TAB(15); i; TAB(20); j; TAB(25); c$(l)END IFNEXT lEND IFNEXT jNEXT iNEXT kEND一题多解4、这里有 21 张卡片,其上的号码是

7、 1-21,它们的位置是以特殊位置围成一圈,如图所示:这些卡片代表老鼠,你从任何一张卡片开始,并把这张开始的卡片作为“1” ,按顺时针方向数1,2,3,等等。当你数到某张卡片上的号数与你数的数一致,就算你捉到一只老鼠,然后拿走这张卡片,再从紧接着的下一张卡片开始数1,2,3,试着再一次捉到一只。比如你从 18开始,数 1, 2,3,你首先捉到的是 19 张卡片,拿走 19 张卡片,接着下一张卡片是 21,从 21开始数 1,2,3,逮住的是 10,拿走 10 号卡片,接着再次捉到的是 1,拿走 1,再如此捉下去,如果有一次你数到 21 还捉不到任何一只时,你就算失败了,因为卡片上最大的数不可能

8、是 22。现在,理想结果是逮住所有这 21 只老鼠,如果求得 2 次实验就得成功,按上图的顺序是不可能的。必须改变次序,既在开始前改变某二张卡片的位置。请找出几种卡片互换的位置的方法,使你仅捉 21 次,便逮住所有 21 只老鼠。当然还必须找到正确的开始点。(注意:必须在开始前交换一次二张卡片的位置)。解法(1):CLSDIM a(21), b(21)FOR n = 1 TO 21READ a(n)NEXT nFOR i = 1 TO 20FOR j = i TO 21FOR n = 1 TO 21b(n) = a(n)NEXT nm = b(i): b(i) = b(j): b(j) = m

9、GOSUB 100NEXT jNEXT iEND100 k = 0: d = 0105 FOR l = 1 TO 21IF b(l) = 0 THEN 155k = k + 1IF k = 22 THEN 165IF k = b(l) THEN 135GOTO 155135 b(l) = 0k = 0: d = d + 1IF d = 21 THEN 200155 NEXT lGOTO 105165 RETURN200 PRINT “a (“; i; “) =“; a(i), “a (“; j; “) =“; a(j)ENDDATA 19,21,5,18,8,11,16,9,12,4,10,1

10、,14,15,17,3,7,13,6,20,2解法(2):CLSDIM a(21), b(21)FOR i = 1 TO 21: READ a(i): b(i) = a(i): NEXT iDATA 19,21,5,18,8,11,16,9,12,4,10,1,14,15,17,3,7,13,6,20,2FOR a = 2 TO 20FOR b = 1 + a TO 21FOR i = 1 TO 21: b(i) = a(i): NEXT iSWAP b(a), b(b)n = 0: s = 02 FOR i = 1 TO 21IF b(i) = 0 THEN 1n = n + 1IF b(i

11、) = n THEN b(i) = 0: n = 0: s = s + 1IF s = 21 THEN PRINT “a(“; a; “)=“; a(a), “b(“; b; “)=“; a(b): ENDIF n = 22 THEN 31 NEXT iIF s 1) AND (y 1)x = x - 1: y = y - 1LOOPDOPRINT “(“; x; “,“; y; “)“;x = x + 1: y = y + 1LOOP UNTIL (x n) OR (y n)PRINTx = i: y = jDO WHILE (x 1)x = x + 1: y = y - 1LOOPDOPRINT “(“; x; “,“; y; “)“;x = x - 1: y = y + 1LOOP UNTIL (x = 0) OR (y = n + 1)END

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报