Sobes.tech
Junior

Ako sú v programovaní usporiadané polia?

sobes.tech AI

Odpoveď od AI

Pole sú zoradené kolekcie prvkov rovnakého typu, uložené v susedných (sekvenčných) pamäťových bunkách.

Hlavné vlastnosti:

  • Indexovanie: Prístup k prvkom sa vykonáva pomocou indexu, ktorý začína od 0. Index ukazuje posun od začiatku poľa.
  • Veľkosť: Veľkosť poľa (počet prvkov) je pevná pri jeho vytvorení v jazykoch s pevným typom alebo sa môže dynamicky meniť v jazykoch s dynamickým typom (napríklad Swift Array).
  • Druh dát: Všetky prvky poľa musia mať rovnaký dátový typ.
  • Sekvenčnosť: Uloženie prvkov v susedných pamäťových bunkách zabezpečuje rýchly prístup ku ktorémukoľvek prvku pomocou jeho indexu.

Operácie:

  • Prístup pomocou indexu: O(1) - konštantný čas.
  • Pridanie/odstránenie na konci: O(1) priemerné pre dynamické polia (Swift Array).
  • Pridanie/odstránenie na začiatku alebo v strede: O(n) - lineárny čas, pretože môže byť potrebné posunúť prvky.

Príklad v Swift:

// Vytvorenie poľa reťazcov
var names: [String] = ["Alice", "Bob", "Charlie"]

// Prístup k prvku pomocou indexu
let first_name = names[0] // "Alice"

// Pridanie prvku
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

// Odstránenie prvku
names.remove(at: 1) // ["Alice", "Charlie", "David"]

// Iterácia cez pole
for name in names {
    print(name)
}

Vnútorná štruktúra (pre dynamické polia typu Swift Array):

Dynamické polia sú zvyčajne implementované na základe staticky prideleného bufferu pamäte. Keď kapacita bufferu dosiahne, alokuje sa nový, väčší buffer a staré prvky sa kopírujú (reallocácia). To zabezpečuje amortizovanú zložitosť O(1) pre pridanie na konci.