iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
自我挑戰組

資料結構面面觀系列 第 4

撰寫演算法的五個原則(上)

  • 分享至 

  • xImage
  •  

什麼是演算法呢?
「演算法」在韋氏辭典中定義為:「在有限步驟內解決數學問題的程序」。我們可以把演算法(Algorithm)定義成:「解決問題的方法」。

在撰寫演算法的時候有五點非常重要的原則,分別是以下幾種:
(1)輸入(Input)
(2)明確性(Definiteness)
(3)有限性{Finiteness)
(4)正確性(Correctness)
(5)輸出(Output)

今天我們就來討論前面兩種:
1.輸入(Input):不一定要有輸入。可能沒有,也可能是多個資料輸入。
【題目】 製作蛋糕時,必須要輸入:「雞蛋、麵粉及鮮奶」等食材。

舉例1:不需輸入 如果想要取得系統目前的時間,不須要輸入,只要寫一行now() 函數.就可以輸出系統時間。
舉例2:必需輸入 求某數為奇偶數時.則必須先要有一個輸入整數,才能進行判斷。

2.明確性(Definiteness):每一行指令都必須明確,不可模棱兩可。 【題目】製作蛋糕時,要加入多少的麵粉與雞蛋及要加熱多久, 必須明確,不可模稜兩可。

舉例1:判斷某一數值是否為偶數。 首先我們試著用下列文字來加以描述:
(1)輸入一個正整數。
(2)作餘除運算是否為0。 不具明確性
(3)為0即為偶數。
以上描述看來似乎正確,但是從演算法觀點來看,其中的第(2)點並不符合「明確性」,因它並未說明「餘除運算」是如何運算,容易造成混淆與不解。我們應該改寫為:
(1)輸入一個正整數N。
(2)如果N除以2,其餘數為0。 具明確性
(3)則其N為偶數。

例如2: 「用功的學生才能領獎學金」就不具有明確性,因為每一個人對用功的定義可能不盡相同,而如果改為「成績90以上的學生才能領 獎學金」就是具有明確性,因為90分是一個比較客觀的定義。


上一篇
有無使用資料結構&演算法的比較
下一篇
撰寫演算法的五個原則(下)
系列文
資料結構面面觀13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言