33 lines
573 B
Fortran
33 lines
573 B
Fortran
|
|
!求数组的中位数(偶数个时取平均值)
|
|
real*8 function median(n,A)
|
|
implicit none
|
|
|
|
integer :: n
|
|
real*8 :: A(n)
|
|
real*8 :: B(n),temp
|
|
integer :: i,j
|
|
|
|
!从小到大排序
|
|
B = A
|
|
do i=1,n-1
|
|
do j=i+1,n
|
|
if(B(i)>B(j)) then
|
|
temp = B(i)
|
|
B(i) = B(j)
|
|
B(j) = temp
|
|
end if
|
|
end do
|
|
end do
|
|
|
|
!按奇偶取中位数
|
|
if(mod(n,2)==1) then
|
|
median = B(n/2+1)
|
|
else
|
|
median = (B(n/2)+B(n/2+1))/2.0
|
|
end if
|
|
|
|
end function
|
|
|
|
|
|
|