[問題] 氣泡排序
最近自己參考彭國倫的書寫了氣泡排序法,程式如下面列的。
主要流程是先決定要排幾個整數,然後用亂數產生這些數,最後再由小排到大排序。
程式跑起來雖然沒問題,但是我想到一個問題是如果亂數產生一組相同的數,
這樣子程式會不會發生問題,如果會,該怎麼處理比較好?
希望有這方面經驗的前輩給我一點建議,謝謝各位!
program Bubble_Sort_Test
implicit none
integer, allocatable :: Ran(:)
integer :: i, j, temp, RanSz
integer, parameter :: k=1000
real :: t, start, finish
write(*,*) "Input the size of the allocatable matrix: "
read(*,*) RanSz
call cpu_time(start)
allocate(Ran(RanSz))
call random_seed()
open(unit=3,file='bst.txt')
write(3,*) "----- Not Sorted -----"
do i=1,RanSz,1
call random_number(t)
Ran(i)=int(k*t)
write(3,*) Ran(i)
end do
write(3,*) "----- Not Sorted -----"
do i=RanSz-1,1,-1
do j=1,i,1
if (Ran(j)>Ran(j+1)) then
temp=Ran(j)
Ran(j)=Ran(j+1)
Ran(j+1)=temp
end if
end do
end do
write(3,*) "----- Sorted -----"
do i=1,RanSz,1
Write(3,*) Ran(i)
end do
write(3,*) "----- Sorted -----"
call cpu_time(finish)
write(3,3000) finish-start
3000 format("***** Time = ", f7.3, "seconds. *****")
stop
end program Bubble_Sort_Test
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.56.207
→
03/09 21:56, , 1F
03/09 21:56, 1F
→
03/10 12:16, , 2F
03/10 12:16, 2F
感謝回應,自己是測試過了,的確沒這問題。
不過氣泡排序真的蠻慢的,跟快速排序相比真的差很多。
※ 編輯: Yagyu 來自: 219.84.56.207 (03/10 14:04)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章