作者roopp (OOXX)
看板Fortran
标题[问题] 资料排序问题
时间Fri Oct 1 13:59:52 2010
我今天有一些资料
可能是这样子
0.1
-0.2
-0.1
0.4
0.5
-0.3
-0.4
0.6
然後我要将他们的绝对值从大到小排序
变成
0.1
-0.1
-0.2
-0.3
0.4
-0.4
0.5
0.6
一开始我把资料都读进阵列
然後想说用气泡排序挂ABS去排排看结果排不出来
所以想请问大家 该怎麽写程式码
这是原本的code
subroutine sub3()
implicit none
integer ,parameter :: N=15165
real:: A(N)
integer:: i,j
!
open(11,file="di.txt")
open(12,file="db.txt" ,status='replace')
!
do i=1,15165
read(11,"(F5.1)") A(i)
end do
call BUBBLE_SORT(A,N)
do j=1,15165
write(12,"(F5.1)") A(i)
end do
close(11)
close(12)
end subroutine
!//////气泡排序副程式///
subroutine BUBBLE_SORT(A,N)
implicit none
integer :: N
integer I,J, TEMP
real :: A(N)
do I=N-1,1,-1 ! 开始做N-1次的扫瞄
do J=1,I ! 一对一对的来比较,I之後的数字不用比较
! 如果ABS(A(J)) >ABS( A(J+1)) 就把这两个数值交换
if (
ABS(A(J))>
ABS(A(J+1))) then
TEMP=A(J)
A(J)=A(J+1)
A(J+1)=TEMP
end if
end do
end do
return
write(*,*) A(123)
end subroutine
(气泡排序的副程式是抓FORTRAN95这本书的副程式来改的)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.195
※ 编辑: roopp 来自: 140.112.4.195 (10/01 14:01)
※ 编辑: roopp 来自: 140.112.4.195 (10/01 14:23)
1F:→ awer89:绝对值从大到小排序还是相反 10/01 16:58
2F:→ gilocustom:A是浮点数,TEMP却是整数? 10/01 17:01
3F:→ awer89:恩 TEMP那里有误 10/01 17:13