快速排序法(Quick Sort)又稱分割交換排序法,是目前公認效率極佳的演算法,使用了分治法(Divide and Conquer)的概念。原理是先從原始資料...
講了幾天的資料結構,先來講幾個有關搜尋的演算法,之後再繼續接回資料結構的其他部分。 循序搜尋 (Sequential Search),說白了就是在已排序的資料中...
「演算法」聽起來好像很難!但是他真的很難嗎? 其實也是有簡單的!「演算法」只是一個比較生硬的名字而已! 根據 維基百科 上的定義 演算法/算則法(Algorit...
目標:這題主要目的在於介紹二元樹的中序走訪,同時用stack結構來講解迭代解的思路。 原題: Question: Given a binary tree, re...
貪婪演算法可以解決的一個問題就是找到一張圖中的最小生成樹(minimum spanning tree)。 樹、生成樹與最小生成樹 我們之前提到資料結構中的樹是有...
目標:這題主要目的在於介紹二元樹中最常見實用的類別:二元搜尋樹(Binary Search Tree) 原題: Question: Given a binary...
題目來源:Valid Binary Search Tree 問題 給一棵樹,判斷它是否是一棵合法的二元搜尋樹 (BST, Binary search tree)...
資料結構 Day 6 - 陣列 (Array) & 串列 (Linked List) Day 7 - 佇列 (Queue) Day 8 -...
希爾排序法(Shell Sort)是插入排序(Insertion Sort)的改良版。可減少插入排序的資料搬移次數,加入了間距(Gap)的概念將資料分成多個小區...
目標:這題主要目的在於介紹一個特別的演算法,它叫做Boyer–Moore majority vote algorithm(摩爾投票算法)。同時,接下來也會多介紹...
目標:這題主要目的在於了解平衡樹的觀念,並幫助讀者學習如何考慮一棵樹在高度平衡時的操作所需的時間複雜度。 原題: Question: Given a binar...
目標:這題主要目的在於闡明In-place algorithm的含義,以及使用In-place的條件下會受到的限制。 原題: Question: Given a...
廣度優先搜尋 (Breadth-first Search),也稱之為寬度優先搜尋。和深度優先搜尋不同的是,深度優先是透過函數的遞迴來延伸運算,而廣度優先則是透過...
目標:這題主要目的在於了解如何處理以排序陣列的快速方法:二元搜尋法。 原題: Question: Given a sorted array and a targ...
寫在前面的碎碎念: 終於要完賽了~~ 首先容許筆者自我工商一下,如果喜歡這一系列的文章,我也有陸續寫新的文章,放在我的Medium中,有興趣的歡迎光臨XD~ 其...
經過前幾天的演算法,都需要小動腦和邏輯上的思考對吧?透過一些比較和分配的技巧,來做資料的排序。 今天,就來講講列舉法 (俗稱暴力破解法)。 列舉法 (Enume...
之前寫到過分治法,它並不是單一個演算法,而是許多演算法設計的基礎。同理,貪婪演算法也是一種設計模式。這類演算法的作法是,在每一個階段選擇當前最佳解,並以此達到整...
目標:這題主要目的在於透過題目來介紹前面提過的Bitwise Operation的應用。 原題: Question: Given a non-empty arr...
昨天有稍微提過因為 Bellman-Ford 演算法不像 Dijkstra 演算法是用貪心策略找出每個頂點的最短路徑去做擴展,今天就來討論如果 Bellman-...
Q1. 遞迴 (recursive) 是什麼? 遞迴是一種解題的方法,主要是透過「重複呼叫自身程式碼」,將大問題切成小問題來找到解答 提到 recursive...
目標:這篇的目標是介紹Gray Code以及二進位的位元運算部分。 原題: Question: The gray code is a binary numera...
之前在貪婪演算法的文章中有提到,現實生活中並不是所有問題都能用演算法快狠準地解決,有些困難的問題只有非常慢的解法。旅行推銷員問題(travelling sale...
目標:這題主要目的在於介紹常見的資料結構:樹(Tree) 原題: Question: Given two binary trees, write a funct...
深度優先搜尋(depth-first search, DFS)是一種搜尋整張圖所有節點的演算法。它的名稱也表達出跟廣度優先搜尋的順序不太一樣,它是從根節點(樹的...
目標:這題的目標在於講述簡單的字串操作方式,以及簡單的二進位的表示法。 原題: Question: Given two binary strings, retu...
前言 今日感冒在家剛好利用時間打一篇文章,天氣變冷了大家要多注意保暖阿。 題目 給定數字n,並列出n * n皇后所有可能。 輸入 4 輸出 [ ["...
目標:選這題的目標旨在說明更為典型的動態規劃算法。 原題: Question: You are climbing a staircase. It takes n...
三角函數是遊戲程式設計師必定要鑽研的課題之一,除了在向量的運算中需要大量的三角函數之外,光是正弦(sine)與餘弦(cosine)這兩個數學式本身,就能帶給遊戲...
目標:選取這題主要目的在於了解二元樹基本的延伸以外,也介紹了另一個常用的資料結構:Queue,用以處理迭代解(Iterative solution)的方法。 原...
插補搜尋 (Interpolation Search),其實用的就是數學裡內插法的概念來運算。在已排序的資料中,將資料視為線性的解,藉由在線上的移動來尋找我們需...