- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法三:冒泡排序法。冒泡排序法的基本思路是将相邻的两个数两两进行比较,使小的在前,大的在后。 第一轮比较: X(1)与X(2)比较,如果X(1)大于X(2),则将X(1)与X(2)互换,否则不交换。然后,将X(2)与X(3)比较,如果X(2)大于X(3),则将X(2)与X(3)互换。如此重复,最后将X(N-1)与X(N)比较,如果X(N-1)大于X(N),则将X(N-1)与X(N)互换,否则不互换,这样第一轮比较N-1次以后,X(N)中必定是N个数中的最大数。 第二轮比较: 将X(1)到X(N-1)相邻的两个数两两比较,比较N-2次以后,X(N-1)中必定是剩下的N-1个数中最大,N个数中第二大的。 如此重复,最后进行第N-1轮比较: X(1)与X(2)比较,把X(1)与X(2)中较大者移入X(2)中,X(1)是最小的数。最后X数组按从小到大顺序排序。 用双重循环来组织排序,外循环控制比较的轮数,N个数排序需比较N-1轮,设循环变量i,i从1变化到N-1。内循环控制每轮比较的次数,第i轮比较N-i次,设循环变量j,j从1变化到N-i。每次比较的两个元素分别为X(j)与X(j+1)。如图7.4所示。 程序如下: PARAMETER(N=100) INTEGER,DIMENSION(N)::P INTEGER I,J,M M=SQRT(REAL(N)) DO I=2,N P(I)=I END DO DO I=2,M IF (P(I)/=0) THEN DO J=2*I,N,I P(J)=0 ENDDO ENDIF ENDDO M=1 DO I=2,N IF (P(I)0) THEN P(M)=P(I) M=M+1 END IF ENDDO WRITE(*,10)(P(I),I=1,M-1) 10 FORMAT(1X,10I5) END 运行结果如下: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 PARAMETER(N=10) INTEGER,DIMENSION(N)::A INTEGER I,X DO I=1,N READ *,A(I) ENDDO READ *,X DO I=1,N IF (A(I)==X) THEN EXIT 例7.8 例7.8 数据检索问题。检索是从一组数据中找出具有某种特征的数据项,它是数据处理中应用很广泛的一种操作。最容易理解的一种检索方式是顺序检索,其基本思想是对所存储的数据从第一项开始,依次与所要检索的数据进行比较,直到找到该数据,或将全部元素都找完还没有找到该数据为止。 设有N个数已存在数组A中,要找的数据为X,将上述检索过程用FORTRAN描述如下: ENDIF ENDDO IF (XN) THEN PRINT *,This data has not been found. ELSE PRINT *,This data has been found.“ PRINT *,It is A(,I,). ENDIF END 一般情况下所要找的数据是随机的,如果要找的数据正好就是数组中的第一个数据,只需查找一次便可以找到;如果它是数组中最后一个数据,就要查找N次,所以查找概率相等时的平均查找次数为: m= (1+2+…n)= (n+1) 显然,数据量越大,需要查找的平均次数也越多。 若被检索的是一组有序数据,就有可能用一种效率较高的方法检索。例如,有一批数据已按大小顺序排列好: a1a2…an 这批数据存储在数组A(1),A(2),…,A(n)中,现在要对该数组进行检索,看给定的数据X是否在此数组中。可以用下面的方法: 在1到n中间选一个正整数k,用k把原来有序的数列分成三个序列: (1)A(1),A(2),…,A(k-1) (2)A(k) (3)A(k+1),A(k+2),…,A(n) 然后,用A(k)与X比较,若X=A(k),查
文档评论(0)