要撰寫「排序」
就選擇一個你熟悉的「程式語言」去寫就可以了
不一定要Java,.NET這種編譯式語言
Perl,PHP這類shell script
甚至.bat
還是assembly組合語言都可以
奇怪,「排序」好像不是「作業系統」的書教的吧?
還是我唸的是舊教材?
Perl,PHP比較偏直譯式語言
shell script應該是bsh,ksh,csh之類的東東才對
[-隱藏]
回應 :
george 說:
很好奇?
.bat 的排序程式要如何撰寫?
2008-12-01 08:57:41
antijava 說:
哈, 牛皮吹破了 ^_^
硬著頭皮寫了個四個值的排序給大家笑一笑
執行方式:swap 8 9 20 34
先將以下的程式碼存成 swap.bat
@ECHO OFF
SET N1=%1%
SET N2=%2%
SET N3=%3%
SET N4=%4%
ECHO ORIGIN:%n1% %N2% %N3% %N4%
IF %N1% GTR %N2% GOTO SWAPN1N2
:NEXT01
IF %N1% GTR %N3% GOTO SWAPN1N3
:NEXT02
IF %N1% GTR %N4% GOTO SWAPN1N4
:NEXT03
IF %N2% GTR %N3% GOTO SWAPN2N3
:NEXT04
IF %N2% GTR %N4% GOTO SWAPN2N4
:NEXT05
IF %N3% GTR %N4% GOTO SWAPN3N4
:NEXT06
ECHO SORTED:%n1% %N2% %N3% %N4%
GOTO STOP
:SWAPN1N2
SET TEMP=%N1%
SET N1=%N2%
SET N2=%TEMP%
GOTO NEXT01
:SWAPN1N3
SET TEMP=%N1%
SET N1=%N3%
SET N3=%TEMP%
GOTO NEXT02
:SWAPN1N4
SET TEMP=%N1%
SET N1=%N4%
SET N4=%TEMP%
GOTO NEXT03
:SWAPN2N3
SET TEMP=%N2%
SET N2=%N3%
SET N3=%TEMP%
GOTO NEXT04
:SWAPN2N4
SET TEMP=%N2%
SET N2=%N4%
SET N4=%TEMP%
GOTO NEXT05
:SWAPN3N4
SET TEMP=%N3%
SET N3=%N4%
SET N4=%TEMP%
GOTO NEXT06
:STOP
2008-12-01 14:51:57
liqunyan 說:
其實,批次檔就用sort就可以排序啦!這樣應該不算作弊啦!
用pipeline,把資料倒入sort就可以排序。
只是這樣不算寫程式就是。
2008-12-01 15:41:56
作業系統的作業會要你寫「排程」,Schedule。
差一個字差很多哩!
排序,很多地方都找得到範例,各種語言的版本,各種演算法則的版本。
排程就牽涉到你對OS教科書上,排程演算法則的理解了,SJF、Round Robin……
關鍵在於Context Switch的方法(演算法則),你得理解,才能寫出程式(程式本身是沒多困難)。
參考資料:個人意見
1. 類似排序那樣的演算法要如何應用在一般程式撰寫上面嗎?
2. 還是可以在哪個平台/語言開發環境上撰寫排序這個演算法?
3. OS課本上所教的那些排序概念,我要怎麼去測試和實現?
若是1,除非你真的很有心想自己硬幹出一些很複雜的邏輯,不然把資料排序的功能交給Database來處理吧,SELECT + ORDER BY是你資料排序的好朋友
若是2,排序是演算概念,跟語言層次是不太相關的,任何語言都可以撰寫排序演算法,有資料(或者物件)的地方就有可能會有排序的需求
若是3,OS課本上所提出的排序概念僅是很廣泛的概念,我不想澆熄你對學習的熱情,但還是要跟你說,記下來就好
回應 :
請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數
-
‧
-
‧
-
‧









