iT邦幫忙

演算法相關文章
共有 309 則文章
鐵人賽 自我挑戰組 DAY 10

技術 Day 10:快速排序(quicksort)

看完了分治法與遞迴,再來看這樣的方法如何解決排序問題。 快速排序是一種利用分治法的演算法,比前面提到的排序方法都要快速許多,有些程式語言的函式庫也直接包含了快速...

鐵人賽 自我挑戰組 DAY 7

技術 【Day 07】Sorting:Insertion Sort 插入排序法 ( 用 JavaScript 學演算法 )

插入排序法是將陣列中未排序的元素,逐一與排序好的資料作比較。它的時間複雜度是 (O(n^2))。 一、步驟觀察 標記第一個元素作為已排序的部分 遍歷未排...

鐵人賽 自我挑戰組 DAY 22

技術 【第二十二天 - DFS 介紹】

Q1. DFS 是什麼 Depth-First Search (DFS) 是一種走訪 Graph 的策略,以深度優先,只要遇到能走的路,就先繼續往下走,直...

鐵人賽 自我挑戰組 DAY 9

技術 Day 09:遞迴(2)

上一回我們看到,同樣的跨年倒數任務,可以用迴圈或遞迴的方式完成。 用迴圈通常可以看到某個變數(例如i)記錄著重複執行的次數,可是遞迴的寫法往往更簡潔,好像我們只...

鐵人賽 AI & Data DAY 7

技術 Day 7: 人工智慧在音樂領域的應用 (有趣的AI演算法一)

前面幾天我們講完了AI經過了幾次大起大落,最後在AlphaGo一戰封神後被推向最高端,機器學習/深度學習成為人人所追逐的技術。 但如同我們前面一再強調的: 機器...

鐵人賽 自我挑戰組 DAY 6

技術 【Day 06】LeetCode:Two Sum ( 用 JavaScript 學演算法 )

我們繼續透過 LeetCode #1 Two Sum 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個 nums[] 和 target 找...

鐵人賽 自我挑戰組 DAY 21

技術 【第二十一天 - Graph 題目分析】

先簡單回顧一下,今天預計分析的題目: 997. Find the Town Judge 題目連結:https://leetcode.com/proble...

鐵人賽 自我挑戰組 DAY 8

技術 Day 08:分治法與遞迴(1)

再繼續寫其他更快的排序演算法之前,先來寫分治法(divide-and-conquer paradigm),因為後面的演算法跟它大有關係。 分治法是一種演算法設計...

鐵人賽 自我挑戰組 DAY 20

技術 【第二十天 - Graph 介紹】

Q1. Graph 是什麼 Graph 定義:一個 graph 由 數個點( vertex )與數個邊( edge ) 組成 圖形的表示有兩種方法:相鄰矩陣...

鐵人賽 自我挑戰組 DAY 5

技術 【Day 05】LeetCode:Plus One ( 用 JavaScript 學演算法 )

我們繼續透過 LeetCode #66 Plus One 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個正整數組成,且從大到小排序好的陣...

鐵人賽 自我挑戰組 DAY 7

技術 Day 07:泡沫排序(bubble sort)

如果一個陣列中的任兩個元素是有排序的,是不是代表整個陣列就是排序好的?這就是泡沫排序的想法。 如果我們想將一列數字由小到大排好,用泡沫排序的步驟是: 兩個相鄰...

鐵人賽 自我挑戰組 DAY 4

技術 【Day 04】LeetCode:Fizz Buzz ( 用 JavaScript 學演算法 )

我們透過 LeetCode #412 Fizz Buzz 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個正整數 從 1 到 n,依序判斷...

鐵人賽 自我挑戰組 DAY 19

技術 【第十九天 - Binary Tree題目分析】

先簡單回顧一下,今天預計分析的題目:94. Binary Tree Inorder Traversal 題目敘述:https://leetcode.co...

鐵人賽 Software Development DAY 4

技術 【在廚房想30天的演算法】Day 04 來淺談一下空間複雜度

Aloha!我是中秋節沒有肉烤的少女人妻 Uerica!今年連假沒什麼跟朋友相聚的機會,還收到一堆月餅,根本在考驗意志力。半夜想偷吃月餅的時候我都會 googl...

鐵人賽 自我挑戰組 DAY 6

技術 Day 06:選擇排序(selection sort)

先前看到了常見執行時間的圖形,線條越平代表演算法速度越快,越陡則代表越慢。 我們會發現O(log n)的二分搜尋其實算是數一數二快速的演算法,不過二分搜尋的條件...

鐵人賽 自我挑戰組 DAY 18

技術 【第十八天 - Binary Tree介紹】

Q1. binary tree 是什麼 二元樹 (binary tree) 是一種資料結構,應用非常廣泛,是資訊人必學的基礎概念 二元樹是圖論中的一種樹,這種...

鐵人賽 Software Development DAY 3

技術 【在廚房想30天的演算法】Day 03 那個時間複雜度會讓人生變複雜嗎?

Aloha!又是我少女人妻Uerica!話說這次有很多以前的朋友同學們一起參加鐵人賽,,不但可以一起加油打氣,因為每天都會去收看大家的文章,真是收穫滿滿~啊。...

鐵人賽 自我挑戰組 DAY 3

技術 【Day 03】如何評估演算法的效率? Big O 與時間複雜度

一、如何判斷演算法的效能 ? 當同樣的問題,可以用不一樣的演算法來解決時,要如何判斷哪個演算法比較好 ?可以使用以下兩個評量指標: 花的時間少,所需步驟少 (...

鐵人賽 自我挑戰組 DAY 5

技術 Day 05:到底有多壞?演算法的最壞情況執行時間

討論演算法的執行時間到現在,我們只提最糟糕的情況,好像不斷在強調演算法的效能可以有多差。 你可能會想,就算用線性搜尋玩猜數字,最衰最衰要猜100次,那也會有很多...

鐵人賽 自我挑戰組 DAY 17

技術 【第十七天 - 動態規劃 題目分析】

先簡單回顧一下,今天預計分析的題目: 53. Maximum Subarray 題目敘述:https://leetcode.com/problems/m...

鐵人賽 自我挑戰組 DAY 2

技術 【Day 02】認識演算法 Algorithm ( 使用 JavaScript )

一、什麼是演算法 ( Algorithm ) ? 演算法是一組 step by step 用來解決問題、完成任務的指令,它的定義: 在有限時間內 在有限步驟內...

鐵人賽 Software Development DAY 2

技術 【在廚房想30天的演算法】Day 02 想著想著想到一個 Big O

Aloha!又是我少女人妻Uerica!第二天了,真是令人興奮,因為後面要怎麼寫我都還沒想好啊~哈哈哈哈!昨晚躺在床上想了一夜都睡不著,一直在想...明天要吃什...

鐵人賽 自我挑戰組 DAY 4

技術 Day 04:大O符號的含意

上一回提到大O符號表達執行時間,但對於大O符號我們可能有些疑問。 既是叫時間,那它的單位是什麼? 我們可以在演算法的例子中加入時間來比較一下。 如果今天有一個有...

鐵人賽 Software Development DAY 1

技術 【在廚房想30天的演算法】Day 01 演算法好吃嗎~

【在廚房想30天的演算法】Day 01 演算法好吃嗎~ Aloha!我是少女人妻Uerica!哈哈哈,過了一年又開始跟老公沒話題了,加上疫情關係天天處一起,我...

鐵人賽 自我挑戰組 DAY 16

技術 【第十六天 - 動態規劃 介紹】

Q1. 動態規劃(Dynamic Programming)是什麼 ? Dynamic programming,簡稱DP,是一種多階段決策出最佳解的方法,他會...

鐵人賽 自我挑戰組 DAY 15

技術 【第十五天 - Linked list 題目分析】

先簡單回顧一下,今天預計分析的題目: Swap Nodes in Pairs 題目連結:https://leetcode.com/problems/s...

鐵人賽 自我挑戰組 DAY 3

技術 Day 03:如何分析演算法?

上一回講到兩種搜尋演算法,一種是一個一個找,一種則是每次尋找都可以去掉一半的選項,好像有一種是明顯比較快的做法,可是我們要怎麼表達這樣的差異呢? 執行時間 一般...

鐵人賽 自我挑戰組 DAY 14

技術 【第十四天 - Linked list介紹】

Q1. linked list是什麼 是一種資料結構,透過很多節點(Node)串接成一個 linked list 型態的資料。 以 python 宣告的 Li...

鐵人賽 自我挑戰組 DAY 13

技術 【第十三天 - 遞迴 題目分析】

先簡單回顧一下,今天預計分析的題目: 題目連結:https://leetcode.com/problems/merge-two-sorted-lists/...

鐵人賽 自我挑戰組 DAY 2

技術 Day 02:二分搜尋(binary search)

第一個演算法既是叫搜尋,那我們先想像一些生活中找東西的情境。 如果有一疊照座號排好的作業,要找出28號同學的,我們很可能會先拿開上面半疊,從中間開始找。 或者如...