費氏搜尋(Fibonacci Search)演算法,運用費氏數列的搜尋演算法 2020 年 5 月 28 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 費氏搜尋(Fibonacci Search)演算法有點像是二元搜尋(Binary Search)演算法,同樣是在一個已排序好的陣列中搜尋元素,但是它在移動陣列索引值時是去參考費氏數列(Fibonacci Sequence),而不是像二元搜尋法那樣總是去取索引的中間值。也由於費氏搜尋法在移動陣列索引值時只需要進行加減運算,不需乘、除法,因此它適合被用在不擅長處理乘、除法的CPU上。 繼續閱讀
深度優先搜尋(DFS)和廣度優先搜尋(BFS)演算法,實用的節點搜尋法 2019 年 10 月 10 日 Magic Len 研究分享、 Rust、 演算法 圖(graph)是由節點(node)和邊(edge)組合而成的非線性結構,如果我們想要從其中的一個節點開始,走訪到其有直接或是間接連接的其它所有節點,可以依靠深度優先搜尋法(DFS, Depth-first Search)或是廣度優先搜尋法(BFS, Breadth-first Search)來達成。 繼續閱讀
寫程式的基本功:搜尋演算法(Search Algorithm) 2019 年 5 月 22 日 Magic Len 研究分享、 演算法 這裡所稱的搜尋(Search),是指在一個已排序好或是尚未排序好的集合中,將指定元素的鍵值(key)或是索引值(index)搜尋出來,或者是給定某個條件,在集合中搜索出符合該條件的資料。在集合內搜尋元素的方法當然不會只有一種,而不同方法搜尋資料的難易度、速度和其它特性自然也會有所不同。搜尋演算法(Search Algorithm)就是搜尋資料的方法,目前已知的方法有很多,在這篇文章中將會整理本站所... 繼續閱讀
暴力字串搜尋(Brute-force Substring Search)演算法,簡單粗暴地在一個字串中尋找子字串 2019 年 5 月 20 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 暴力字串搜尋(Brute-force Substring Search)演算法是最基本的字串搜尋演算法。它可以按照原文中字元的順序,逐一與搜尋樣本(pattern)進行比對,判斷目前的搜尋位置是否就是搜尋樣本存在的位置。 繼續閱讀
插補搜尋(Interpolation Search)演算法,運用資料近似線來輔助搜尋的演算法 2019 年 5 月 18 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 插補搜尋(Interpolation Search)演算法又稱為內插搜尋演算法,是二元搜尋(Binary Search)演算法的變體。這套演算法可以在已排序好的序列中根據資料的預測線或近似線來進行高效率的搜尋,近似線愈精準,搜尋的效率就愈高。 繼續閱讀
指數搜尋(Exponential Search)演算法,搜尋目標在序列愈前面就愈快的演算法 2019 年 5 月 16 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 指數搜尋(Exponential Search)演算法又稱為雙倍搜尋(Doubling Search)演算法或是蔓延搜尋(Galloping Search)演算法,是二元搜尋(Binary Search)演算法的變體。這套演算法可以在已排序好的序列中進行高效率的搜尋,要搜尋的元素在序列中愈前面的話,搜尋效能愈好。 繼續閱讀
二元搜尋(Binary Search)演算法,簡單又快速的搜尋演算法 2019 年 5 月 14 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 二元搜尋(Binary Search)演算法又稱為二分搜尋(Half-Interval Search)演算法或是對數搜尋(Logarithmic Search)演算法,顧名思義,這套演算法的核心思想就在於「二分」,可以在已排序好的序列中進行高效率的搜尋。 繼續閱讀
線性搜尋(Linear Search)演算法,最基本的搜尋演算法 2019 年 5 月 12 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 線性搜尋(Linear Search)演算法又稱為循序搜尋(Sequential Search)演算法,是學習程式語言最先需要學會的搜尋演算法。它可以按照元素在資料結構中的順序,從頭開始進行走訪,並連續判斷目前走訪到的元素是否是我們想要找的元素。 繼續閱讀
快速選擇(Quickselect)演算法,快速尋找第K小或是第K大的元素 2016 年 5 月 24 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 快速選擇(Quickselect)演算法是利用快速排序(Quick Sort)演算法,在排序序列的同時,選擇出序列中第K小或是第K大的元素。若我們只想要從序列中找出一個第K小或是第K大元素,使用快速選擇法會比使用快速排序法來得快很多,因為前者不需要把序列的排序完整做完,平均只需線性時間即可找到結果。 繼續閱讀
Boyer-Moore-MagicLen(BM-MagicLen)字串搜尋演算法,超快速的全文搜尋演算法 2016 年 4 月 9 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 在一篇很長的文章或是一大串文字中找出自己想看到的段落是我們時常會需要做的事情,但是要如何有效率地讓電腦尋找文字中的文字是一件需要思考的事情,甚至有許多針對這個議題所提出的研究論文。字串搜尋演算法的好壞,在複雜的文件內容下,對搜尋時間的影響是非常深遠的。字串搜尋除了能夠正確搜尋一段文字內的特定字串外,還可以用來搜尋龐大的任意資料,因為任何的資料都可以藉由數位編碼轉成只有數字的字串,如一段原始的聲音,... 繼續閱讀