Sobes.tech
Junior

Kako su struktureirani nizovi u programiranju?

sobes.tech АИ

Одговор од АИ

Nizovi su uredjene kolekcije elemenata istog tipa, koji se čuvaju u susednim (sekvencijalnim) memorijskim ćelijama.

Glavne karakteristike:

  • Indeksiranje: Pristup elementima se vrši putem indeksa koji počinje od 0. Indeks ukazuje na pomak od početka niza.
  • Veličina: Veličina niza (broj elemenata) je fiksna pri njegovom kreiranju u jezicima sa statičkim tipom ili može dinamički da se menja u jezicima sa dinamičkim tipom (npr. Swift Array).
  • Tip podataka: Svi elementi niza moraju imati isti tip podataka.
  • Sekvencijalnost: Čuvanje elemenata u susednim memorijskim ćelijama omogućava brz pristup bilo kojem elementu putem njegovog indeksa.

Operacije:

  • Pristup putem indeksa: O(1) - konstantno vreme.
  • Dodavanje/uklanjanje na kraju: O(1) u proseku za dinamičke nizove (Swift Array).
  • Dodavanje/uklanjanje na početku ili u sredini: O(n) - linearno vreme, jer može biti potrebno pomeranje elemenata.

Primer u Swift:

// Kreiranje niza stringova
var names: [String] = ["Alice", "Bob", "Charlie"]

// Pristup elementu putem indeksa
let first_name = names[0] // "Alice"

// Dodavanje elementa
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

// Uklanjanje elementa
names.remove(at: 1) // ["Alice", "Charlie", "David"]

// Iteracija kroz niz
for name in names {
    print(name)
}

Interna struktura (za dinamičke nizove tipa Swift Array):

Dinamički nizovi se obično implementiraju na statički dodeljenom memorijskom baferu. Kada kapacitet bafera dostigne, dodeljuje se novi, veći bafer i stari elementi se kopiraju (reallocacija). Ovo obezbeđuje amortizovanu složenost O(1) za dodavanje na kraj.