Alan Zhan 部落格

Live for nothing, or die for something

Binary Search Algorithm - 二元搜尋法

我們來玩猜數字遊戲,1 ~ 100 中的整數,你必須猜中我腦海中的數字,而且我們必須在最少的布數內猜到答案,那麼你會怎麼猜呢? 答案很簡單,你一定會從 50 開始猜,如果沒猜中的話,太高你就會從 25 開始猜,太低你就會從 75 開始猜,以此類推,你每次操作的過程,你都會從中剖一半來猜測,其實你所使用的就是 Binary Search。

Linear Search Algorithm - 線性搜尋法

在查找一個元素是否存在的時候,我們最常使用的方式是甚麼呢?答案是 for 或者是 while 迴圈,恭喜你!已經學習完 Linear Search 了! 概念 線性搜尋 (Linear Search):這個演算法會訪問每個元素,確認元素在陣列中的哪個位置,如果找不到元素則會回傳 -1。

Divide and Conquer - 分而治之

分而治之 從字面上看起來,就是把一個複雜的問題分解成兩個或者很多個相同或者相似的問題,讓小問題可以被解決,再將最終結果合併求出問題的答案。 優點 解決問題的難度降低。 可以提升執行效率。 有些時候能夠平行處理,增進性能。 使用步驟 分解:將一個問題分解成若干個較小的問題,相對獨立,與原先問題形式相同的子問題。 解決:若子問題規模較小並且容易解決時,就直接解決。否則,就遞迴的方式解決子問題。 合併: …

Big O Notation - Big O 符號

如何選擇演算法來解決問題 同一個問題可以用不同的演算法來解決問題,但是選擇哪一個最好?有兩個指標可以評估一個算法的好壞: 時間複雜度 (花的時間) 空間複雜度 (花的記憶體) 所以花費的時間越少、花費的記憶體越少,通常就是越好的演算法,但是演算法的時間複雜度分析又可以細分為以下三種:

Emotional Blackmail - 情緒勒索

什麼是情緒勒索? 在探討情緒勒索之前,我們得先搞清楚什麼是情緒勒索? 情緒勒索者可能在有意識或者無意識當中,使用要求、威脅、施壓、沉默等間接或直接的「勒索」手段,讓被勒索者產生各種負面情緒,譬如:挫折感、罪惡感、恐懼感等等,這些感受就會在被勒索者的心中發酵造成傷害。

Atomic Habits - 原子習慣

複利 「複利」這個詞貫穿了整部本書,我們可以說它是世界第八大奇蹟,一點也不為過。 你每天只進步 1% ,持續了之後一年 (1.01 ^ 365 = 37.78),你將進步 37 倍。 你每天持續退步了 1% ,持續了一年 (0.99 ^ 365 = 0.03) ,你將退步到趨近 0 。 所以習慣就是自我改善這一件事情的複利威力。