?? bsearch.f90
字號(hào):
!
! 折半查找法范例
! By Perng 1997/8/31
program BINARY_SEARCH_DEMO
implicit none
integer, parameter :: N=10 ! 類型的大小
integer :: A(N)=(/2,5,7,9,10,11,13,17,21,23/)
integer KEY
integer LOC
integer, external :: BINARY_SEARCH
write(*,"('Source=>',10I3)") A
write(*,*) 'Input KEY:'
read (*,*) KEY
! 調(diào)用順序查找的子程序
LOC=BINARY_SEARCH(A,N,KEY)
if ( LOC/=0 ) then
write(*,"('A(',I2,' )='I3)") LOC,KEY
else
write(*,*) "Not found"
end if
stop
end program
!
! 折半查找法的子程序
!
integer function BINARY_SEARCH(A,N,KEY)
implicit none
integer N,A(N)
integer KEY ! 所要尋找的值
integer L ! 記錄每一個(gè)小組的類型起始位置
integer R ! 記錄每一個(gè)小組的類型結(jié)束位置
integer M ! 記錄每一個(gè)小組的類型中間位置
! 一開(kāi)始的小組范圍就是整個(gè)類型
L=1
R=N
M=(L+R)/2
! 如果KEY值超出范圍, 鐵定不存在類型中
if ( (KEY < A(L)) .OR. (KEY > A(R)) ) then
BINARY_SEARCH = 0
return
end if
do while( L <= R )
if ( KEY > A(M) ) then
! 如果 key > 中間值,那數(shù)據(jù)就落在上半部
L=M+1
M=(L+R)/2
else if ( KEY < A(M) ) then
! 如果 key < 中間值,那數(shù)據(jù)就落在下半部
R=M-1
M=(L+R)/2
else if ( KEY .EQ. A(M) ) then
BINARY_SEARCH = M
return
end if
end do
BINARY_SEARCH = 0
return
end function
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -