[問題] 氣泡排序

看板Fortran作者 (煙火)時間13年前 (2011/03/08 20:09), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
最近自己參考彭國倫的書寫了氣泡排序法,程式如下面列的。 主要流程是先決定要排幾個整數,然後用亂數產生這些數,最後再由小排到大排序。 程式跑起來雖然沒問題,但是我想到一個問題是如果亂數產生一組相同的數, 這樣子程式會不會發生問題,如果會,該怎麼處理比較好? 希望有這方面經驗的前輩給我一點建議,謝謝各位! 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)
文章代碼(AID): #1DTXn-cd (Fortran)
文章代碼(AID): #1DTXn-cd (Fortran)