演算法是何物? 寫一個程式一定需要用到它嗎? 我剛開始寫程式都是想辦法達到題目要求的結果, 只要結果是對的, 老師那題就當做全對, 當然程式其中的效率和撰寫技巧一定和老手差很多... 最近剛要修資料結構, 老師要求除了寫出正確結果的程式外, 還得先敘述使用的演算法, 把流程說明白, 這是指要敘述程式的每個步驟是用什麼方法寫的嗎? 如果是, 這有何用意呢, 老師看原始檔就知道了吧... 如果不是, 那又是該敘述什麼?
不了解... 寫程式不就是先想好大致的寫法, 寫出來後再從中除錯修正直到達成正確結果嗎? 可能是我寫的程式不多又很小吧, 到底演算法是什麼? 我怕曲解了老師的意思, 敘述了一大堆多餘的東西, 請各位指教!
2006-10-04 17:35:52 · 4 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
我還有些問題:
老師要求要先說明的東西有演算法的流程和使用的資料結構, 如果那個程式並未使用資料結構呢?
舉個我以前寫過的題目, 我直接po別人的網址上來, 裡面有程式碼:
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/BigNumber.htm
像這個例子是否就沒使用到資料結構?
2006-10-06 20:00:06 · update #1
演算法 (Algorithm) 的定義是『在有限步驟內一定會算出答案的方法;哪怕算出的答案叫此題無解。』
就是說:Algorithm是個(理論上)一定不會進入無限迴圈的東東。
寫程式,最好要用到它!
一個沒有 Algorithm 的程式,誰知它會不會結束?會不會當?
Algorithm 雖然都有結果,但有好壞之分。
同樣的題目,有的程式 2 秒跑出來,有的程式 40 分鐘只做出 50 分之一,還可能會當機!(這是個人真實經驗,資料量才 105萬 而已。)
〝先想好大致的寫法〞那〝大致的寫法〞就是你的Algorithm!
但,它真的能解決問題嗎?它快嗎?它一定能解決問題嗎?
如,題目:輸入 2 整數 a, b,求 a, b 的整數商。
for (c=0; a>=b; c++; a-=b); printf("%d", c);
這方法好吧!?短又快!
但,它〝不一定〞會結束!沒判斷 b == 0 !
因為它〝不一定〞結束!它不能叫 Algorithm!
當然,Algorithm 是方法,不是程式!!
有不懂的再問,大家再補充!
加油! ^_^
2006-10-05 19:21:01 補充:
定義上,〝不能確定〞會出答案的真的不叫演算法!
演算法一定要會出答案;哪怕答案是〝題目太難我不會〞!
『即使他是O(N!)複雜度』,在 C*N! 後,它還是會出答案──雖然可能是3百萬年後。
不適合的演算法,就是不好的演算法。
不管是題目、機器、教授、老闆、顧客……,他要求要快,你的演算法是省RAM,那就是不好的演算法。他要求要省RAM,你的是快,那也是不好的演算法。他要求在某RAM的大小下,要快、要不用到 XX 設備;你的很快,卻用了超過的RAM或用到XX設備,那還是不好的演算法!
有的演算法,又慢又耗RAM,如何說它只是不適合,不是不好?
2006-10-05 19:23:19 補充:
喔,忘了寫:
關於定義上,沒確定會不會出答案的是不是演算法,可以看課本,或參維基百科。
http://en.wikipedia.org/wiki/Algorithm
2006-10-07 06:56:48 補充:
陣列就是他用的資料結構
2006-10-04 17:57:19 · answer #1 · answered by ? 7 · 0⤊ 0⤋
演算法是解開問題的逐步方法 而程設是解開問題的工具!
2016-11-07 12:44:46 · answer #2 · answered by 家生 1 · 0⤊ 0⤋
一講到演算法我就想到時間複雜度,因為有些演算法使終無法逃脫"指數時間"的宿命。
2006-10-05 06:01:59 · answer #3 · answered by Almond 6 · 0⤊ 0⤋
嗯!同意 Jacob Lee的說法!
演算法 (Algorithm) 在實務應用上真的很管用.若有機會的話要好好學!
因為在值場上,懂演算法的技術人員真的會比較吃香!
2006-10-04 19:22:19 · answer #4 · answered by ㄚ旺 5 · 0⤊ 0⤋