什麼是算法?

了解算法如何運行世界

算法是一組指令。 定義真的很簡單。 算法可以像給出這樣的指令一樣簡單:

  1. 沿著街道往下走
  2. 拿第一個右邊
  3. 找到左邊的第二個房子
  4. 敲門和
  5. 交付包裹。

但是,雖然算法的定義很簡單,但實際意義以及它如何影響我們的生活可能會非常複雜。

一個算法的例子

我們在日常生活中使用的算法的一個常見例子是配方。 這套說明為我們提供了所有我們需要的成分以及如何處理這些成分的指導。 聽起來很簡單,對吧?

但如果你不知道量杯保存在哪裡呢? 你需要一個算法來找到它。 你甚至可能需要一個關於如何使用量杯的算法。

所以雖然算法是一組指令,但它也需要考慮誰或將要解釋這些指令的內容。 例如,如果您向朋友發出指示,詳細說明如何從您的房子到最近的雜貨店,那麼您的朋友只有在知道您的房子位於何處時才知道如何去該商店。 他們無法從另一個朋友的家找到那家特別的雜貨店。

這就是算法如何既簡單又復雜。 當我們談論計算機算法時,理解計算機能做什麼是製定算法的基本部分。

排序算法如何演變

最早創建的算法之一是氣泡排序例程。 泡泡排序是一種通過循環遍歷數據集來排序數字,字母或單詞的方法,並行比較每組值,並在需要時交換它們。

重複這個循環直到算法可以在整個列表中移動而不需要交換任何東西,這意味著值被正確排序。 這種類型的算法通常被稱為遞歸算法,因為它一遍又一遍地循環,直到它完成任務。

算法看起來可能很簡單:

  1. 轉到第一個值。
  2. 根據需要檢查下一個值和交換位置的值
  3. 轉到下一個值並重複比較。
  4. 如果我們在列表的最後,如果在循環期間交換了任何值,則返回頂部。

但是冒泡排序並不是最有效的排序方式。 隨著時間的推移和計算機變得更有能力快速完成複雜的任務,新的排序算法出現了。

一種這樣的算法掃描第一個列表並創建第二個排序值列表。 此方法只會遍歷原始列表,並且每​​個值都將循環遍歷第二個列表,直到找到放置值的正確位置。 通常,它比使用冒泡排序方法更高效。

這是算法可能變得非常瘋狂的地方。 或者真的很有趣,取決於你如何看待它。

儘管氣泡排序方法被認為是以多種方式排序值最無效的方法之一,但如果原始列表正確預分類,泡泡排序可能是有效的方法之一。 這是因為,在這種情況下,冒泡排序算法會一次遍歷列表並確定它被正確排序。

不幸的是,我們並不總是知道我們的列表是否預先排序,所以我們必須選擇一種在大量列表中平均使用效率最高的算法。

我們從泡沫分類中學到了什麼

Facebook算法和日常生活中的更多

算法每天都在幫助人類。 當您搜索網頁時,一個算法正在努力尋找最佳搜索結果。 向智能手機詢問路線,算法會決定您採取的最佳路線。 當你瀏覽Facebook時,算法會決定我們朋友的哪些Facebook帖子對我們來說最重要。 (希望我們的朋友不要發現Facebook認為我們最喜歡哪一個!)

但算法思維可以幫助我們遠遠超出我們的計算機生活。 它甚至可以幫助我們建立更好的三明治。

比方說,我從兩片麵包開始,將芥末放在一片上,將蛋黃醬放在另一片上。 我在蛋黃醬麵包上放了一片奶酪,頂端放了一些火腿,一些生菜,兩片番茄,然後用芥末覆蓋在上面。 好的三明治吧?

當然,如果我馬上吃。 但是,如果我把它放在桌子上一會兒,那麼頂部的一片麵包就會因浸泡一些番茄而變得潮濕。 這是一個我沒有預料到的問題,我可能會在註意到之前多年製作三明治,但是一旦我做了,我就可以開始考慮改變我的算法以建立更好的三明治。

例如,我可以擺脫番茄。 但我不想失去番茄的味道。 相反,我可以把麵包和萵苣之後的番茄放在三明治上。 這使得生菜在番茄和麵包之間形成保護屏障。

這就是算法演變的過程。 算法不一定要由計算機運行才算算法。 算法是一個過程,過程就在我們身邊。