




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、FOTRAN90程序設(shè)計(jì)計(jì)算機(jī)中心 2006.3Visual Fortran 90 程序設(shè)計(jì)7.1 一維數(shù)組7.2 多維數(shù)組7.3 數(shù)組運(yùn)算7.4 數(shù)組作為過程啞元7.5 程序舉例簡單變量是用來存儲(chǔ)一個(gè)數(shù)據(jù) 數(shù)組是用來存儲(chǔ)一批類型相同的被稱為元素的有序數(shù)據(jù)例:1,3,5,7,9 例:3個(gè)學(xué)生4門課程的成績 98,89,88,95.5 78,67,87,66 67,75,88,88一維數(shù)組:一行或一列數(shù)據(jù)二維數(shù)組:一頁表格三維數(shù)組:若干頁表格存儲(chǔ)在數(shù)組A中存儲(chǔ)在數(shù)組B中變量與數(shù)組的區(qū)別7.1 7.2 數(shù)組數(shù)組的分類維數(shù)最多可用到七維一維二維數(shù)組名:統(tǒng)稱了一批數(shù)據(jù)數(shù)組元素:是數(shù)組中某一個(gè)數(shù)據(jù)的名稱
2、數(shù)組元素的寫法:一維數(shù)組:數(shù)組名(下標(biāo)表達(dá)式)數(shù)組元素與下標(biāo)二維數(shù)組:數(shù)組名(行下標(biāo)表達(dá)式,列下標(biāo)表達(dá)式)三維數(shù)組:數(shù)組名(行下標(biāo)表達(dá)式,列下標(biāo)表達(dá)式, 頁下標(biāo)表達(dá)式)注意:下標(biāo)表達(dá)式值自動(dòng)取整數(shù)。 下標(biāo)值可正、可負(fù)、可為零。下標(biāo)就是序號例1:1,3,5,7,9 存儲(chǔ)在數(shù)組A中設(shè)1為第一個(gè)元素,數(shù)組A的各元素為: A(1)、A(2)、A(3)、A(4)、A(5)設(shè)1為第0個(gè)元素,數(shù)組A的各元素為: A(0)、A(1)、A(2)、A(3)、A(4)設(shè)1為第-1個(gè)元素,數(shù)組A的各元素為: A(-1)、A(0)、 A(1)、A(2)、A(3)例2:98,89,88,95.5 存儲(chǔ)在數(shù)組B中 78,6
3、7,87,66 67,75,88,88 設(shè)表中行號為1,2,3,列號為1,2,3,4則 78為B(2,1) 75為B(3,2)程序中所有數(shù)組要先說明類型、名字、大小,再使用說明方法一:用類型說明語句例:INTEGER,DIMENSION(1:5):A,B(-1:2),C 數(shù)組說明DIMENSION屬性統(tǒng)一說明大小名字后個(gè)別說明大小個(gè)別優(yōu)于統(tǒng)一 REAL(4),DIMENSION(1:3,1:4):B=0 數(shù)組說明的一般格式:類型(長度說明,種別說明),Dimension(大小),其它屬性說明:數(shù)組名1=初值,數(shù)組名2=初值例:INTEGER,DIMENSION(1:5):A,B(-1:2),C
4、 REAL(4),DIMENSION(1:3,1:4):B=01、大?。喉殞懨骶S數(shù),維界 維數(shù)逗號分隔 每維維界d1:d2, 下界d1,上界d2。 2、維長:d2-d1+1 3、元素個(gè)數(shù):各維維長的乘積 4、形狀:各維維長的序列 數(shù)組說明的基本概念維數(shù)、維長1、下界d1的值由用戶規(guī)定, 如為1,說明時(shí)可省略 不寫 例:REAL,DIMENSION(2,3) : A2、必須滿足d1BIG)BIG=A(I)ENDDOPRINT*,BIGENDBIG=MAXVAL(A)元素法數(shù)組名法(函數(shù))、片段法1.常界數(shù)組: 說明時(shí),大小說明中只能出現(xiàn)整型常數(shù)或整型符號常數(shù)。 REAL,DIMENSION(10
5、):C使用范圍:主程序,函數(shù)子程序、子例行子程序2.可調(diào)數(shù)組: 說明可調(diào)數(shù)組時(shí),大小說明中出現(xiàn)了整型變量。 REAL,DIMENSION(M,N):C使用范圍:只在子程序中使用。注意點(diǎn):調(diào)用含可調(diào)數(shù)組的子程序時(shí),須確定維界變量的值(虛實(shí)結(jié)合、模塊單位) SUBROUTINE SUB(C,M,N) REAL,DIMENSION(M : N):C 7.1.5 數(shù)組形式確定維界變量的值編子程序把10個(gè)整數(shù)中最大的數(shù)找出來,并指出它在隊(duì)列中的位置。編主程序,從鍵盤輸入10個(gè)數(shù)據(jù),調(diào)用子程序輸出最大值及它在隊(duì)列中的位置。PROGRAM MAINIMPLICIT NONEINTEGER,DIMENSION
6、(10):AINTEGER:MAX,KREAD*,ACALL S(A,MAX,K)PRINT*,MAX,KENDSUBROUTINE S(A,MAX,K)IMPLICIT NONEINTEGER,DIMENSION(10):AINTEGER:MAX,K,IMAX=A(1);K=1DO I=1,10IF(A(I)MAX)THENMAX=A(I);K=IENDIFENDDOEND應(yīng)用:常界數(shù)組說明不能缺兩單位獨(dú)立一批數(shù)據(jù)的處理引入數(shù)組編寫通用子程序把n個(gè)整數(shù)中最大的數(shù)找出來,并指出它在隊(duì)列中的位置。編主程序,從鍵盤輸入10個(gè)數(shù)據(jù),調(diào)用子程序輸出最大值及它在隊(duì)列中的位置。通用子程序的實(shí)現(xiàn):可調(diào)數(shù)組,
7、假定形狀數(shù)組,動(dòng)態(tài)數(shù)組SUBROUTINE S(A,n,MAX,K)IMPLICIT NONEINTEGER,DIMENSION(n):AINTEGER:MAX,K,I,nMAX=A(1);K=1DO I=1,nIF(A(I)MAX)THENMAX=A(I);K=IENDIFENDDOENDPROGRAM MAINIMPLICIT NONEINTEGER,DIMENSION(10):AINTEGER:MAX,KREAD*,ACALL S(A,10,MAX,K)PRINT*,MAX,KEND用可調(diào)數(shù)組傳遞維界變量的值3.假定形狀數(shù)組: 說明假定形狀數(shù)組時(shí),不出現(xiàn)上下維界,只用一個(gè)冒號“:”表示或
8、只寫下維界。 REAL,DIMENSION(:):D1 INTEGER,DIMENSION(:,:):D2 REAL,DIMENSION(3:):D3使用范圍: 假定形狀數(shù)組只能在子程序中作虛數(shù)組用。注意點(diǎn):調(diào)用時(shí),必須寫接口塊且調(diào)用時(shí)它從實(shí)數(shù)組獲得形狀參數(shù),要求虛實(shí)維數(shù)一致(維界可不一致)。 SUBROUTINE S(A,n,MAX,K)IMPLICIT NONEINTEGER,DIMENSION(:):AINTEGER:MAX,K,I,nMAX=A(1);K=1DO I=1,nIF(A(I)MAX)THENMAX=A(I);K=IENDIFENDDOENDPROGRAM MAINIMPLI
9、CIT NONEInterfaceSUBROUTINE S(A,n,MAX,K)IMPLICIT NONEINTEGER,DIMENSION(:):AINTEGER:MAX,K,I,nendendinterfaceINTEGER,DIMENSION(10):AINTEGER:MAX,KREAD*,ACALL S(A,10,MAX,K)PRINT*,MAX,KEND假定形狀數(shù)組的應(yīng)用A為虛元主調(diào)單位必須寫接口塊A形狀取實(shí)元形狀4.動(dòng)態(tài)數(shù)組: 說明時(shí)大小用冒號,且有ALOCATABLE屬性。 動(dòng)態(tài)的含義:說明時(shí)不分配存儲(chǔ)單元,運(yùn)行時(shí)由語句分配對應(yīng)大小的內(nèi)存,且大小可按需要變化。 使用范圍:主程序、
10、各子程序(不能作為虛元)動(dòng)態(tài)數(shù)組的說明及使用步驟:1)說明時(shí)必須說明ALLOCATABLE屬性。 REAL,DIMENSION(:),ALLOCATABLE:AL1,AL22)用ALLOCATE語句分配內(nèi)存: ALLOCATE(數(shù)組名(大?。├?ALLOCATE(AL1(3),AL2(2,3)3)用DEALLOCATE語句釋放內(nèi)存:如果任務(wù)已經(jīng)完成,需釋放內(nèi)存,節(jié)省存儲(chǔ)空間。 DEALLOCATE(AL1,AL2) 未釋放前不能再分配SUBROUTINE S(n,MAX,K)IMPLICIT NONEINTEGER,DIMENSION(:),allocatable:AINTEGER:MAX,
11、K,I,nAllocate(a(n)READ*,(A(I),I=1,N)MAX=A(1);K=1DO I=1,nIF(A(I)MAX)THENMAX=A(I);K=IENDIFENDDOENDPROGRAM MAINIMPLICIT NONEINTEGER:MAX,KCALL S(10,MAX,K)PRINT*,MAX,KEND子程序用動(dòng)態(tài)數(shù)組的應(yīng)用屬性不能缺少先分配,再輸入A不能作虛元編寫主程序把n個(gè)整數(shù)中最大的數(shù)找出來,并指出它在隊(duì)列中的位置。當(dāng)數(shù)組大小未知,可用動(dòng)態(tài)數(shù)組實(shí)現(xiàn)IMPLICIT NONEINTEGER,DIMENSION(:),allocatable:AINTEGER:MAX
12、,K,I,nRead*,nAllocate(a(n)READ*,(A(I),I=1,N)MAX=A(1);K=1DO I=1,nIF(A(I)MAX)THENMAX=A(I);K=IENDIFENDDOPrint*,max,kDeallocate(a)end主程序中動(dòng)態(tài)數(shù)組的應(yīng)用順序不能顛倒5、假定大小數(shù)組:假定大小數(shù)組:說明時(shí)最后一維的上界為*號,其余所有 的特征(維數(shù)、維界)都必須指定。使用范圍:假定大小數(shù)組只能在子程序中作虛數(shù)組用。注意點(diǎn):使用數(shù)組時(shí)必須寫下標(biāo),即不能對名字操作,只能對元素或片段操作;且調(diào)用時(shí)它從實(shí)數(shù)組獲得大小參數(shù)例:Subroutine assume(A)Real ,d
13、imension (2,2,*):AA=5A為虛元大小取對應(yīng)實(shí)元的大小錯(cuò)誤用法調(diào)用:Real x(8)Call assume(x)數(shù)組賦值語句的形式與一般變量賦值相似,其一般格式是: A=e A是一個(gè)數(shù)組名或數(shù)組片段, e是數(shù)組名、數(shù)組片段、構(gòu)造器或簡單變量等組成的表達(dá)式。注意:e中出現(xiàn)的數(shù)組或數(shù)組片段的形狀必須與A相同形狀一致對應(yīng)元素進(jìn)行運(yùn)算7.3 數(shù)組運(yùn)算7.3.1 數(shù)組賦值維數(shù)、維長相同例如:A大小為(3:5,1:2) B大小為(11:13,5:6) A=B !是合法的。賦值規(guī)則:對應(yīng)元素賦值也可以對數(shù)組直接賦某個(gè)標(biāo)量值。 INTEGER,DIMENSION(4):AA=5含義:A的每個(gè)
14、元素的值均為5數(shù)組表達(dá)式定義:表達(dá)式中出現(xiàn)數(shù)組名、數(shù)組片段 數(shù)組構(gòu)造器等數(shù)組操作數(shù)。注意:要求各數(shù)組操作數(shù) 的形狀一致1.數(shù)組與數(shù)組進(jìn)行運(yùn)算:對應(yīng)元素進(jìn)行運(yùn)算例:INTEGER,DIMENSION(2,3):A,B,C C=A*B例:A(1:5)+B(2:6)形狀同為(5)的片段相加 7.3.2 數(shù)組表達(dá)式2.數(shù)組與標(biāo)量運(yùn)算數(shù)組表達(dá)式可以與標(biāo)量作算術(shù)運(yùn)算,其結(jié)果是數(shù)組。例如:INTEGER,DIMENSION(4):A,BB=A-5 !表示A中各個(gè)元素的值均減去5即B=A-(/5,5,5,5/)小結(jié):數(shù)組賦值、運(yùn)算,最終將歸結(jié)到每個(gè)對應(yīng)元素上進(jìn)行。 Fortran90提供了豐富的數(shù)組操作函數(shù),
15、但它們的函數(shù)值可以是數(shù)組,但不一定全是數(shù)組。1、求數(shù)組大小函數(shù)(SIZE) size(數(shù)組名,DIM)可選項(xiàng)DIM:指明選中哪一維來求函數(shù)值,DIM=1表求每一列的大??;DIM=2表求每一行的大小。 例:size(a) size(a,DIM=1) size(a,2) 7.3.3 數(shù)組內(nèi)在函數(shù)265頁函數(shù)值不是數(shù)組2、求數(shù)組極值函數(shù) 求數(shù)組A的最大值函數(shù):MAXVAL(A,DIM,MASK=邏輯表達(dá)式)可選項(xiàng)MASK:起屏蔽作用,為邏輯表達(dá)式 求數(shù)組最小值的函數(shù): MINVAL (A,DIM,MASK)例:MAXVAL(A) MAXVAL(A,2) MAXVAL(A,1,MASK=A2)函數(shù)值不
16、一定是數(shù)組函數(shù)值是數(shù)組3、求數(shù)組最大值元素下標(biāo)的函數(shù): MAXLOC(A,DIM,MASK) 求數(shù)組最小值元素下標(biāo)的函數(shù):MINLOC 函數(shù)值一定為一維數(shù)組例:INTEGER,DIMENSION(2,3):A INTEGER,DIMENSION(2):B A= RESHAPE(/1,2,6,3,4,5/),(/2,3/) B=MAXLOC(A,A0) SUM(B,MASK=B0, 1) 沒有滿足條件的元素時(shí),結(jié)果為0函數(shù)值是數(shù)組函數(shù)值不是數(shù)組5、求數(shù)組各元素之積的函數(shù)(PRODUCT) PRODUCT(array,DIM,MASK) 沒有滿足條件的元素時(shí),結(jié)果為1, MASK=可省略6、DOC
17、_PRODUCT(A,B)一維數(shù)組A、B的點(diǎn)積7、MATMUL(A,B)矩陣A、B相乘8、SHAPE(A)求數(shù)組A的形狀函數(shù),值為數(shù)組。9、求數(shù)組維的上下界函數(shù) LBOUND(ARRAY,DIM) UBOUND(ARRAY,DIM)10、數(shù)組轉(zhuǎn)置函數(shù)(TRANSPOSE) TRANSPOSE(MATRIX) 要求數(shù)組MATRIX為2維數(shù)組 屏蔽數(shù)組賦值是指按照邏輯數(shù)組表達(dá)式的值屏蔽數(shù)組賦值語句中表達(dá)式的求值和賦值??梢杂蓋here語句或where結(jié)構(gòu)實(shí)現(xiàn)。1、Where語句: where(數(shù)組關(guān)系表達(dá)式)數(shù)組賦值語句要求所有數(shù)組形狀一致,運(yùn)算規(guī)則:對應(yīng)位置上的元素進(jìn)行操作例如:Where(A0
18、)B=0 表示當(dāng)A某一位置上的元素值小于0時(shí),它對應(yīng)位置上B的元素就置0,否則保持不變。相當(dāng)于 DO I=1,SIZE(A) IF(A(I)0)B(I)=0 ENDDO7.3.4 屏蔽數(shù)組賦值2、where結(jié)構(gòu):Where(數(shù)組關(guān)系表達(dá)式) 數(shù)組賦值語句Else where 數(shù)組賦值語句End where類似與標(biāo)量操作時(shí)的IF結(jié)構(gòu)。它只能用于數(shù)組操作,不允許嵌套。例:設(shè)A,B,C,D為同形數(shù)組WHERE(C=0)C=1ELSEwhereA=B/CD=B*CENDWHERE虛元只能為變量名、數(shù)組名、過程名。實(shí)元任意1、當(dāng)虛元為變量名時(shí),對應(yīng)的實(shí)元可為同類型的變量名、常量或表達(dá)式、數(shù)組元素(例:7
19、-6 158頁)虛實(shí)結(jié)合規(guī)則:傳送地址,虛元借用實(shí)元的存儲(chǔ)單元2、當(dāng)虛元為數(shù)組名時(shí)對應(yīng)的實(shí)元可為同類型的數(shù)組名、數(shù)組元素名、數(shù)組片段。注意:對應(yīng)數(shù)組的維數(shù)、維界可以不同(假定形狀的數(shù)組維數(shù)應(yīng)一致) 7.4 數(shù)組作為過程的實(shí)元、虛元虛實(shí)結(jié)合的規(guī)則:傳送地址1、當(dāng)虛實(shí)都為數(shù)組名時(shí):結(jié)合起點(diǎn)均從第一個(gè)元素開始,結(jié)合的順序?yàn)閮?nèi)存順序(二維為列序)例:INTEGER,DIMENSION(6):AA=(/1,2,3,4,5,6/)CALL S(A)PRINT*,AENDSUBROUTINE S(B)INTEGER,DIMENSION(2,3):BB=B+1END 2 3 4 5 6 7實(shí)元為數(shù)組名2、當(dāng)虛
20、元為數(shù)組名,對應(yīng)實(shí)元為數(shù)組元素名 結(jié)合的起點(diǎn):虛元的第一個(gè)元素與實(shí)元指定的數(shù)字元素結(jié)合,結(jié)合的順序?yàn)閮?nèi)存順序例:INTEGER,DIMENSION(6):AA=(/1,2,3,4,5,6/)CALL S( A(2) )PRINT*,AENDSUBROUTINE S(B)INTEGER,DIMENSION(2,2):BB=B+1END 1 3 4 5 6 6 實(shí)元為數(shù)組元素名3、虛元為數(shù)組名,對應(yīng)實(shí)元為數(shù)組片段注意到數(shù)組片段構(gòu)成一個(gè)新的數(shù)組,虛實(shí)結(jié)合同1例:INTEGER,DIMENSION(3,3):AA=(/1,4,7,2,5,8,3,6,9/)CALL S( A(2:3,1:2) )END
21、SUBROUTINE S(X)INTEGER,DIMENSION(4):XPRINT*,XEND7 5 8實(shí)元為數(shù)組片段虛數(shù)組可為假定大小數(shù)組和可調(diào)數(shù)組等多種情況。虛實(shí)結(jié)合方式同常數(shù)組 如函數(shù)值為數(shù)組,主調(diào)程序中必須寫接口塊例:假設(shè)有兩個(gè)形狀相同(3行4列)的數(shù)組A和B,編寫求A+B的函數(shù)子程序,并把A+B的值作為函數(shù)值。7.4.2 數(shù)組可作為函數(shù)過程的函數(shù)值Function f(a,b)result(c)Implicit noneInteger,dimension(3,4):a,b,cC=a+bEndProgram mainImplicit noneInterfaceFunction f(a
22、,b)result(c)Implicit noneInteger,dimension(3,4):a,b,cendendinterfaceInteger,dimension(3,4):a,b,cInteger:I,JC=f(a,b)Do I=1,3Print*,(c(I,j),j=1,4)Enddo; end函數(shù)值為數(shù)組主調(diào)程序必須寫接口數(shù)組處理:1、元素法:對數(shù)組的元素處理常用循環(huán)結(jié)構(gòu),下標(biāo)為循環(huán)變量2、數(shù)組名法、片段法:調(diào)用數(shù)組的內(nèi)在函數(shù)數(shù)組程序設(shè)計(jì):常見算法一、求數(shù)組元素累加和1、調(diào)用SUM內(nèi)在函數(shù)2、元素法: 循環(huán)結(jié)構(gòu):重復(fù)S=S+A(I)(一維) S=S+A(I,J)(二維)求所有元素
23、之和INTEGER,DIMENSION(2,3):ADO I=1,2 READ(*,*)(A(I,J),J=1,3)ENDDOS=0DO I=1,2 DO J=1,3 S=S+A(I,J) ENDDOENDDOPRINT*,SEND元素法調(diào)用內(nèi)在數(shù)組函數(shù)法:S=SUM(A)題型:求所有元素之和 求行和(列和) 求對角線元素之和注意:1、對角線元素累加:只能用元素法 S=S+A(I,I)+A(I,N-I+1)2、求行和(列和)元素法初值位置1、調(diào)用內(nèi)在函數(shù)MAXVAL、MAXLOC2、元素法算法: 引入BIG,賦初值(常用第一個(gè)元素或最小值) 剩下的所有元素與最大值比較:循環(huán)結(jié)構(gòu)題型:求所有元素
24、的最大值及其位置 求行(列)中最大值及其位置 求對角線中最大值及其位置二、求最大(?。┲导捌湮恢茫?INTEGER,Dimension(5,6): A DO I=1,5 Read(*,*)(A(I,j),j=1,6) ENDDO Do I=1,5 Amax=A(I,1); N=1 Do j=1,6 If (a(I,j),GT, Amax)THEN Amax=A(I,j) N=j endif ENDDO write(*,*) Amax,N ENDDO END 例14:輸入56的矩陣,求出每行的最大值及其所在的列號。元素法調(diào)用內(nèi)在數(shù)組函數(shù)法:INTEGER,DIMENSION(5):AMAX,NA
25、MAX=MAXVAL(A,2)N=MAXLOC(A,2)三、篩選有序置數(shù)算法:只能用元素篩選法順序比較例:將20個(gè)整數(shù)中能被3整除的數(shù),有序保存到數(shù)組b中,輸出b。IMPLICIT NONEINTEGER,DIMENSION(20):A,BINTEGER:K,IREAD*,AK=1DO I=1,20IF(MOD(A(I),3)=0)THENB(K)=A(I)K=K+1ENDIFENDDOPRINT*,(B(i),I=1,K-1)ENDB大小同A當(dāng)前K中無值有序:引入變量K=1 K=K+11、用數(shù)組片段: 引入一維數(shù)組C C=A(K,:);A(K,:)=A(1,:);A(1,:)=C2、用元素循
26、環(huán):引入簡單變量T, 交換A(1,J)與A(K,J) 四、交換數(shù)組的兩行(第一行與第K行)交換第J列的兩個(gè)元素DO J=1,N T=A(1,J) A(1,J)=A(K,J) A(K,J)=TENDDO在A(1)到A(N)中求最小值的位置K,交換A(1)與A(K).在A(2)到A(N)中求最小值的位置K,交換A(2)與A(K).在A(N-1)到A(N)中求最小值的位置K,交換A(N-1)與A(K). 例9: 輸入N個(gè)數(shù)(NA(2),交換兩數(shù),否則不變 ; 如A(2) A(3) ,交換兩數(shù),否則不變; 如A(N-1) A(N),交換兩數(shù),否則不變。重復(fù)N-1次排完,或某一輪未發(fā)生交換排完。石沉大海
27、、冒泡排序法 program S3 INTEGER,parameter :N=30 REAL,Dimension (N) : A Read(*,*) (A(I),I=1,N) Do I=1,N-1 最多N-1次石沉大海第I次石沉大海Do J=1,N-1 IF (A(J)A(J+1) THEN Q=A(J);(J)=A(J+1);A(J+1)=Q ENDIF ENDDOENDDO write (*,*) A ENDIP=0IP=1IP為標(biāo)志變量,無交換IP=0,有交換IP=1每輪掃描開始時(shí)IP=0。IF (IP=0) EXIT 兩種方法: 1、順序查找; 2、折半查找。 例10: 輸入N個(gè)數(shù),從
28、中查找某個(gè)指定的數(shù)。六、查找 1順序查找將一組數(shù)存入一維數(shù)組A中,待查找數(shù)存入變量X中,把X與A數(shù)組中的元素,從頭到尾逐一比較,查找X的值在A數(shù)組中是否存在。 設(shè)N=30 INTEGER, Parameter :N=30 INTEGER,Dimension: A(N) INTEGER:X,IP,I Read(*, (30F8.2) (A(I),I=1,N) Read(*,*) x IP=0 IP為標(biāo)志變量,未找到IP=0,找到IP=1開始時(shí)IP=0。Do I=1,N IF(X,EQ,a(i)Then Write(*, ( No Number, f 8.2) X;IP=1 EXIT ENDIF
29、ENDDO IF(IP=0)PRINT*,X, NO FIND END 只能對有序數(shù)據(jù)進(jìn)行查找,假設(shè)數(shù)據(jù)按升序排好后放在數(shù)組A中,待查數(shù)據(jù)放在X中。步驟如下:引入變量top查找區(qū)間起點(diǎn) bot查找區(qū)間終點(diǎn)(1)MID=(top+bot)/2查找區(qū)間中點(diǎn)(2)比較a(mid)與x 相等,表示已找到 不等,區(qū)間縮短一半重復(fù),直至找到或topbot終止。技巧:引入標(biāo)志變量 p=.true.表示找到 p=.false.表示找不到 2.折半查找法 (對分查找)例11:設(shè)50個(gè)數(shù)據(jù)已按升序排列存放于數(shù)組A中。X為待查找的數(shù)。TOP和BOT分別表示查找區(qū)間的端點(diǎn),MID為查找區(qū)間的中點(diǎn),邏輯變量P為標(biāo)志變量。logical:pInteger,parameter:n=50Integer,dimension(n):aINTEGER:X,TOP,BOT,MIDRead*,aread(*,*) xp=.false.;top=1;bot=nDO while (top.le.bot.and.not.p) 取區(qū)間中點(diǎn)區(qū)間縮小一半mid=top+bot)/2 if (x.eq.a(mid)then p =.true.;write(*,*) x,mid elseif (x.lt.a(mid)then bot
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游酒店服務(wù)行業(yè)技術(shù)應(yīng)用報(bào)告
- 在線學(xué)習(xí)平臺的設(shè)計(jì)與開發(fā)解決方案
- 腫瘤內(nèi)科總論復(fù)習(xí)試題
- 電商直播帶貨全鏈路服務(wù)運(yùn)營優(yōu)化方案
- 儲(chǔ)能投資收益影響因素探討
- 游戲引擎應(yīng)用開發(fā)與優(yōu)化實(shí)戰(zhàn)手冊
- 農(nóng)業(yè)生產(chǎn)機(jī)械化服務(wù)體系方案
- 三農(nóng)村特色三農(nóng)產(chǎn)品網(wǎng)絡(luò)銷售模式指南
- 自動(dòng)化辦公流程設(shè)計(jì)與優(yōu)化指南
- 2025年智能食品營養(yǎng)秤項(xiàng)目合作計(jì)劃書
- 2025-2030年中國發(fā)酵豆粕行業(yè)運(yùn)行態(tài)勢及投資前景規(guī)劃研究報(bào)告
- 酒店建設(shè)項(xiàng)目施工總承包合同
- 博物館疫情防控方案與參觀人數(shù)控制
- 2025年政府采購代理機(jī)構(gòu)考試題庫及答案
- 第14課《第一次世界大戰(zhàn)》中職高一下學(xué)期高教版(2023)世界歷史全一冊
- 2024年司法考試完整真題及答案
- 湖南師范大學(xué)某中學(xué)2024屆高三摸底(高二期末)考試數(shù)學(xué)試卷(含答案)
- 樹木高空修剪安全施工方案
- 以租代購合同范例
- 第八章:農(nóng)業(yè)科技成果轉(zhuǎn)化
- 水庫周邊綠化養(yǎng)護(hù)方案
評論
0/150
提交評論