欣迪

最近購買演算法的教學課程的心得分享。

Counter 演算法,有很多種不同的名稱,但概念都是相近的,算是超入門的演算法。

這種算法非常適用於大量數據的計次,例如數據分析、統計或在處理大量數據時尋找常見模式。

舉個例子,假設你正在開發一個問卷調查分析程式,需要計算每個選項被選中的次數。這時,可以使用Counter算法來輕鬆實現這一功能。

function countElements(arr) {
    let counter = {};

    arr.forEach(element => {
        if (counter[element]) {
            counter[element] += 1;
        } else {
            counter[element] = 1;
        }
    });

    return counter;
}

// 示例使用
let exampleArray = ["apple", "banana", "apple", "orange", "banana", "apple"];
let countedElements = countElements(exampleArray);

console.log(countedElements);
// 输出: { apple: 3, banana: 2, orange: 1 }

假設你有一個含有大量元素的數組,你需要統計每個元素在數組中出現的次數。如果沒有Counter算法,一個直觀的方法可能是對於數組中的每個元素,都去掃描整個數組來計數,這種方法的時間複雜度是 O(n^2),其中 n 是數組的大小。因為對於每個元素,你都需要遍歷整個數組來計數。

然而,使用Counter算法,你只需遍歷一次數組,即可完成計數。每當遇到一個元素,就在一個對象(或稱為映射)中更新這個元素的計數。這個過程的時間複雜度是 O(n),因為每個元素只被處理一次。

假如你有一個包含10000個單詞的文章,你需要計算每個單詞出現的次數。使用傳統的方法,對於每個單詞,你可能需要再次遍歷整個文件來計數,這會非常耗時。但是,如果使用Counter算法,你只需遍歷文件一次,就可以得到每個單詞的計數。

算法在時間複雜度上的優勢是它能夠以線性時間處理數據,這在處理大量數據時非常有用。

訂閱 IT-Monk

訂閱最新文章的發布消息! 😚😚😚
Loading

作者介紹 - 欣迪

欣迪

從設計到寫程式,發現自己有追求前端技巧的自虐傾向。不斷的踩坑,再從坑裡爬出來,慢慢對攀岩有點心得。 目前在多間公司擔任網站設計顧問。 同時也是網站架設公司負責人。