iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

概念

首先,讓我們使用一個不太常見的比喻來解釋演算法的概念。我們將繼續以拉麵為例,製作一碗美味的拉麵需要經過多個步驟,例如製麵、熬湯、煮麵、製作叉燒和添加配料等。這些實際操作步驟可以被視為完成一碗美味拉麵的演算法。

與資料結構相比,演算法更關注解決問題的方法或流程。如果要用簡潔的語言來定義演算法,基本上可以說演算法是由有限步驟組成的一組指令,用於解決特定問題。

在資訊科學中,有一個常說的觀念是:程式設計 = 資料結構 + 演算法。這表明演算法的重要性不可忽視。

須具備的特性

  • 輸入: 演算法需要接受輸入,這是它操作的起點。
  • 輸出: 演算法產生輸出,解決問題的結果。
  • 明確性: 演算法需要清晰而明確,以便證明它能夠正確地解決問題。
  • 有限性: 演算法必須在有限的步驟內完成,不能無限運行。
  • 有效性(可行性): 演算法必須基於已實現的基本運算,可以通過有限次實行來執行。

設計模式與理念

演算法的核心在於建立抽象問題模型並明確定義解決目標。然後,根據具體問題的需求,我們可以選擇不同的模式和方法來設計演算法。每種演算法通常都有其自己的設計流程或模板。然而,有些方法不被視為演算法,例如遞迴(Recursive),因為它通常被視為一種演算法設計方法,而不是具有特定實現模板的演算法。

常見演算法

有些演算法具有特定的名稱,而其他則不是。常見的排序演算法和搜尋演算法通常都有自己的名稱,例如氣泡排序、合併排序、二分搜尋等等。

學習演算法的目的

  • 提高程式執行效率。
  • 透過演算法解決問題。
  • 學習設計理念,以應對各種問題和競賽題目。

上一篇
Day-7 鏈結串列(Linked List)
下一篇
Day-9 排序 I
系列文
從競賽程式學習資料結構與演算法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言