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.