selection sort

請問有人能以FORTRAN寫出

輸入十個學生成績

找最高成績和最低成績由小排到大嘛

用selection sort寫出來

分數個別是60 40 80 50 70 30 55 65 90 75

謝謝..

Update:

close(15)這串是什麼意思阿

open (unit=15, file='score.dat', status='old', access='sequential')

後面是什麼意思= =

為什麼我有在C槽自己開了

可是怎麼不能執行阿

1 Answer

Rating
  • Jack
    Lv 5
    1 decade ago
    Favorite Answer

    程式如下:(假設學生成績是儲存在文字檔 score.dat 內)

    program main

    integer s(10), i, j, im, it

    open (unit=15, file='score.dat', status='old', access='sequential')

    read(15, "(10(i2,1x))") s

    close(15)

    write (*, "(10i3)") s

    do i = 1, 9

    im = i

    do j = i+1, 10

    if (s(j) < s(im)) im = j

    end do

    it = s(i)

    s(i) = s(im)

    s(im) = it

    write (*, "(10i3)") s

    end do

    write (*, "(/'Highest score =', i3)") s(10)

    write (*, "('Lowest score =', i3)") s(1)

    write (*, "('Sorted score list: ', 10i3)") s

    end

    執行結果:

    60 40 80 50 70 30 55 65 90 75

    30 40 80 50 70 60 55 65 90 75

    30 40 80 50 70 60 55 65 90 75

    30 40 50 80 70 60 55 65 90 75

    30 40 50 55 70 60 80 65 90 75

    30 40 50 55 60 70 80 65 90 75

    30 40 50 55 60 65 80 70 90 75

    30 40 50 55 60 65 70 80 90 75

    30 40 50 55 60 65 70 75 90 80

    30 40 50 55 60 65 70 75 80 90

    Highest score = 90

    Lowest score = 30

    Sorted score list: 30 40 50 55 60 65 70 75 80 90

    為了證明這確實是用 selection sort 演算法,我把排序的中間過程也列印出來以供參考。當然你也可以只列印最後結果,不列印中間過程。

    2009-06-11 18:36:07 補充:

    你必須用 WordPad 或其他你慣用的文字編輯器自己建立一個文字檔,檔名叫 score.dat(或者隨便取一個檔名,但程式也要跟著改),內容只有這一行字:

    60 40 80 50 70 30 55 65 90 75

    這麼做是一勞永逸的作法,不然在程式測試階段,每次執行都還要把這些數字從頭到尾再打一次。

    至於 open 和 close 指令的說明,請參考 Fortran 教科書或使用手冊。

Still have questions? Get your answers by asking now.