Znalost moderního programování otevírá dveře budoucností.

Teorie algoritmů – lineární a kvadratická časová složitost

Teorie algoritmů – lineární

a kvadratická časová složitost

Sdílet příspěvek

Časová složitost algoritmu patří mezi základní parametry, kterými se hodnotí efektivita algoritmických řešení. Je vyjádřena pomocí notace Big-O, jež popisuje, jak se doba běhu algoritmu mění v závislosti na velikosti vstupních dat (n). Tento článek se zaměřuje na dvě nejčastěji analyzované třídy algoritmů – lineární časovou složitost O(n) a kvadratickou časovou složitost O(n²). Tyto dvě složitosti se objevují napříč mnoha oblastmi informatiky, od vyhledávání a procházení datových struktur až po řadicí algoritmy.

Lineární časová složitost — O(n)

Algoritmus s časovou složitostí O(n) má dobu běhu přímo úměrnou počtu vstupních prvků. Pokud se vstup zdvojnásobí, přibližně se zdvojnásobí i doba provedení.

Typické vlastnosti:

obsahuje jednu smyčku procházející prvky,

operace uvnitř smyčky má konstantní čas,

algoritmus nezanořuje další cykly.

Typické příklady

lineární vyhledávání (Linear Search),

součet prvků seznamu,

kontrola existence prvku,

průchod grafu BFS/DFS (zjednodušeně).

Příklad programu v Pythonu – Lineární hledání


    def linear_search(arr, target):
        for index, value in enumerate(arr):
            if value == target:
                return index  # vrací index nalezeného prvku
        return -1  # prvek nebyl nalezen


    # Ukázka použití
    data = [4, 8, 1, 7, 9, 3]
    print(linear_search(data, 7))
    

Analýza

Smyčka proběhne maximálně n prvků → O(n).

Kvadratická časová složitost — O(n²)

Algoritmy s časovou složitostí O(n²) vykazují kvadratický růst počtu operací ve vztahu k velikosti vstupu. Pokud n zdvojnásobíme, doba běhu se přibližně čtyřnásobí.

Typické vlastnosti:

vyskytuje se dvojité zanoření cyklů,

algoritmus porovnává každý prvek s každým,

často jde o jednoduché implementace řadicích algoritmů.

Typické příklady

Bubble Sort,

Insertion Sort,

Selection Sort,

generování všech dvojic prvků (kombinace),

matice a operace nad ní (bez optimalizací).

Příklad programu v Pythonu – Bubble Sort


    def bubble_sort(arr):
        n = len(arr)
        for i in range(n):
            for j in range(0, n - i - 1):
                if arr[j] > arr[j + 1]:
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]
        return arr


    # Ukázka použití
    data = [5, 2, 9, 1, 5, 6]
    print(bubble_sort(data))
    

Analýza

Dvojice zanořených smyček → přibližně n × n iterací → O(n²).

Srovnání lineární a kvadratické složitosti

Kvadratická složitost se stává problematickou u větších datových množin (např. tisíce prvků). Pro výuky algoritmů je důležité, aby studenti uměli analyzovat chování algoritmů ještě před implementací.

Praktické doporučení pro studenty

vždy analyzujte, zda algoritmus obsahuje jednu nebo dvě smyčky, dejte pozor na algoritmy porovnávající „každý s každým“, preferujte lineární nebo logaritmické algoritmy, pokud je to možné, kvadratické algoritmy používejte hlavně ve výuce nebo při malých datech.

Lineární a kvadratická časová složitost jsou základní stavební kameny pro pochopení efektivity algoritmů. Znalost těchto konceptů umožňuje studentům informatiky správně volit datové struktury, psát efektivní programy a optimalizovat výkon software. Přestože jednoduché implementace často vedou k O(n²), systematická analýza pomáhá nalézt efektivnější řešení.

Zdroje

CORMEN, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4th ed.). MIT Press.

SEDGEWICK, R., & Wayne, K. (2011). Algorithms (4th ed.). Addison-Wesley.

BRASSARD, G., & Bratley, P. (1996). Fundamentals of Algorithms. Prentice Hall.

KLEINBERG, J., & Tardos, É. (2005). Algorithm Design. Addison Wesley.

KNUTH, D. E. (1997). The Art of Computer Programming. Addison-Wesley.

MITZENMACHER, M., & Upfal, E. (2017). Probability and Computing. Cambridge University Press.

Big-O Cheat Sheet

Python Wiki – Time Complexity

GeeksForGeeks – Analysis of Algorithms

PUBLIKOVÁNO
30.11.2025, 15:56
ODKAZ
https://www.weloveit.education/Article/20251130-Teorie-algoritmu-linearno-a-kvadraticka-casova-slozitost/
asfdasd
asfdasd
asfdasd
asfdasd
asfdasd
asfdasd

Začni hned teď
pracovat na zlepšení svých znalostí.

Vytvoř si vlastní síť zkušeností, přesně tak, jak potřebuješ.