Big O Notation w JavaScript

Notacja Big O jest terminem używanym w informatyce do opisu złożoności algorytmów. Pozwala ona określić, jak szybko rośnie czas wykonania algorytmu lub zajętość pamięci w zależności od wielkości danych wejściowych. W kontekście JavaScript, rozumienie notacji Big O pomaga w tworzeniu bardziej efektywnego kodu, szczególnie ważnego przy pracy z dużymi zbiorami danych lub w środowiskach, gdzie wydajność jest kluczowa.

Przykłady notacji Big O w JavaScript

Zobaczmy kilka przykładów, aby lepiej zrozumieć, jak notacja Big O jest stosowana w JavaScript.

O(1) – Stała złożoność czasowa

Złożoność stała oznacza, że czas wykonania nie zależy od wielkości danych wejściowych. Przykładem może być dostęp do elementu tablicy po indeksie.

// Dostęp do elementu tablicy
function getFirstElement(array) {
    return array[0]; // Zawsze stały czas dostępu,
                     // niezależnie od rozmiaru tablicy
}
O(n) – Liniowa złożoność czasowa

Złożoność liniowa występuje, gdy czas wykonania rośnie liniowo wraz ze wzrostem danych wejściowych. Przykładem może być pętla przechodząca przez każdy element tablicy.

// Funkcja sprawdzająca obecność elementu w tablicy
function containsValue(array, value) {
    for(let i = 0; i < array.length; i++) {
        if(array[i] === value) {
            return true; // Złożoność liniowa, zależy 
                         // od liczby elementów w tablicy
        }
    }
    return false;
}
O(n²) – Kwadratowa złożoność czasowa

Złożoność kwadratowa oznacza, że czas wykonania rośnie kwadratowo wraz ze wzrostem danych wejściowych. Przykładem może być pętla w pętli, np. przy sortowaniu bąbelkowym.

// Sortowanie bąbelkowe
function bubbleSort(array) {
    let length = array.length;
    for (let i = 0; i < length; i++) {
        for (let j = 0; j < length - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                // Zamiana elementów
                let temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
    return array; // Złożoność czasowa O(n²), 
                  // gdzie n to liczba elementów w tablicy
}

Podsumowanie

Notacja Big O jest kluczowym narzędziem w analizie algorytmów, pozwalającym programistom na oszacowanie efektywności ich kodu w kontekście czasu wykonania i zużycia pamięci. Rozumienie tej notacji jest niezbędne dla każdego programisty JavaScript, zwłaszcza przy pracy nad złożonymi aplikacjami, gdzie wydajność ma krytyczne znaczenie. Przykłady pokazały różne typy złożoności, od stałej O(1) po kwadratową O(n²), które mogą pomóc w lepszym projektowaniu i optymalizacji kodu.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video WebDevelopera w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top