bubble sort的概念就是像泡泡一樣 ,越大的數字會漸漸的往右邊浮 比較相鄰的元素 ,兩兩比大小, 如果前面的數字大於後面的數字就交換順序,一路把最...
其實插入排序法就很像平時我們在玩撲克牌時整理牌組的行為,將撲克牌依照大小插入對應的位置,插入排序法的流程是從第2個位置開始與左邊的數字(位置1)比較,然後就依循...
一、什麼是演算法 ( Algorithm ) ? 演算法是一組 step by step 用來解決問題、完成任務的指令,它的定義: 在有限時間內 在有限步驟內...
從今天開始要來理解排序演算法了!簡單來說就是經過一連串的步驟將數字由小排到大或是由大排到小的演算法,下圖列出幾種常見的排序演算法,像是插入排序法、氣泡排序法、合...
一、什麼是資料結構 ? 當我們撰寫程式時,會宣告變數來存放資料,這些資料會儲存在記憶體中,在我們需要時可以拿出來使用。這邊我們可以思考兩點: 要儲存的資料內容...
【在廚房想30天的演算法】Day 01 演算法好吃嗎~ Aloha!我是少女人妻Uerica!哈哈哈,過了一年又開始跟老公沒話題了,加上疫情關係天天處一起,我...
利用將資料切一半的方式來做搜尋,舉例來說,如果要從數字1–100猜終極密碼,如果採用線性搜尋法就是一個一個問?是1嗎?是2嗎?…依序猜下去,很不幸的數字剛好是...
緣起 各位好~我是一個軟體工程師,追求每年都要有不一樣的進步,今年追求的是把自己的基底在打的更穩,之前也沒機會來認真刷題,刷LeetCode就是在練習對演算法及...
線性搜尋法可以說是最容易理解的搜尋演算法了,相信大家都有過類似的經驗,在圖書館裡想在書架上找一本書"湯姆歷險記",假如書本都是未經排序的,...
簡單來說就是函式自己呼叫自己的狀況,遞迴由兩部分組成 Recursive Case(遞迴情況) - 當函式呼叫自己本身的情況 Base Case(基本狀況) ...
雙指針算是一個解題蠻常用的小技巧,雙指針指的是用兩個指針對整個資料做遍歷,而雙指針又依照移動的方向性,分為對撞指針(反方向)和快慢指針(同方向)。 對撞指針 兩...
輾轉相除法(Euclidean algorithm) 輾轉相除法是求兩數的最大公因數(greatest common divisor,GCD)的演算法,也被稱為...
PageRank PageRank是一種連結分析演算法,它通過對超連結集合中的元素用數字進行權重賦值,實現「衡量集合範圍內某一元素的相關重要性」的目的。著名例子...
質數(Prime number) 在國中時有學過質數,質數除了1和本身之外,沒有其他因數的大於1的自然數。質數的應用很廣泛,前幾天所提到的公開金鑰加密演算法,R...
前言 終於結束了安全性演算法的部分,有興趣的人可以進一步學習密碼學,筆者想推薦一個課程: Udemy:數論與密碼學 (Python, JavaScript) 課...
訊息鑑別碼(Message Authentication Code) 訊息鑑別碼(Message Authentication Code,MAC),能夠實現「身...
前言 前一天提到的Hybrid Cryptosystem,其中使用到的「key」會進行封裝,避免被有心人士擷取將加密後的訊息解密。其中用得到的方法就是今天會提到...
前言 前面兩天已經提到共同金鑰密碼系統以及公開金鑰密碼系統,今天要來探討,結合兩種密碼系統,並且彌補其缺點的密碼系統:混成密碼系統(Hybrid Cryptos...
前言 前一天有提到共用金鑰密碼系統(Shared-key CryptoSystem),又稱為「對稱密鑰演算法」(Symmetric-key algorithm)...
前言 前一天我們有稍微提到安全性演算法的其中一個,也就是今天的主題「共同金鑰密碼系統」(shared-key crypto system),其實筆者對於密碼學一...
安全性與演算法 在電腦科學的領域裡,每一刻都有數以萬計的資料在進行傳輸,在傳輸的過程中,是真的安全嗎?相信每個人都有遇過詐騙電話,或是資料外洩,是怎麼樣的過程造...
鏈接串列(Linked List) 鏈接串列是一種線性表,使用Pointer串接資料,好處是找到目標位置後,可以有效率的插入或刪除元素,陣列不適合在中間位置插入...
貪婪(Greedy)演算法 貪婪演算法是考慮局部最佳解,在子結構中解決問題是相當有利的,但放入整體問題中,不一定會是最佳解。 貪婪演算法與動態規劃的不同在於它...
最短路徑演算法 最短路徑是在賦予edges權重的「加權圖形」裡,指定「起點」和「終點」,求出起點到終點之間,權重總和最小的路徑。求取最短路徑時,通常edges的...
使用字典建立圖形資料結構 字典鍵值對應串列如下,配合圖表更容易理解。 G[0]:[1,2,3] G[1]:[0,2,3,4] G[2]:[0,1] G[3]:...
Traversal翻譯成中文就是遍歷的意思,如果要遍歷tree的每個節點的話,會有兩種方式,Breadth-First Tree Traversal和Dept...
Tree and Graph 在開始今天的主題之前,要先來淺談Tree跟Graph。什麼是Tree? Tree Tree 是一種特定的Graph,沒有Loop...
想必大家在刷leetcode時候,刷到特定的題目的時候都曾經看過這樣的圖片,這就是Binary tree,但在認識Binary tree之前,讓我們先來認識t...
圖是由節點(node)和邊(edge)所組成的,一個節點可能與多個節點相連著,而這些相連的節點又被稱作相鄰節點(neighbor),圖在生活中應用的例子相當的...
堆積(Heap) 堆積,是一種樹狀結構,用於實現「優先佇列(Priority queue)」。Priority queue是資料結構的一種,可以自由追加數據,讀...