Sobes.tech
Junior

Масивҳо дар барномасозӣ чӣ гуна сохта шудаанд?

sobes.tech AI

Ҷавоб аз AI

Масивҳо — ин маҷмӯаҳои муташаккилона аз унсурҳои якхелаи навъ, ки дар ҳуҷраҳои ёддоштии ҳамсоя (пайваст) нигоҳ дошта мешаванд.

Хусусиятҳои асосӣ:

  • Индексикунонӣ: Дастрасӣ ба унсурҳо тавассути индекс, ки аз 0 оғоз мешавад. Индекс нишон медиҳад, ки аз оғози масив чӣ қадар дур аст.
  • Андоза: Андозаи масив (суммои унсурҳо) дар вақти эҷод дар забонҳои бо навъи статикӣ муайян мешавад ё метавонад дар забонҳои бо навъи динамикӣ (масалан, Swift Array) тағйир ёбад.
  • Навъи додаҳо: Ҳамаи унсурҳои масив бояд як навъи дода дошта бошанд.
  • Тартиб: Ҳамоҳангсозии унсурҳо дар ҳуҷраҳои ёддоштии ҳамсоя таъмин мекунад, ки ба ҳар унсур тавассути индексаш зуд дастрасӣ ёбанд.

Оператсия:

  • Дастрасӣ тавассути индекс: O(1) — вақти доимӣ.
  • Илова кардан/баровардан дар охир: O(1) дар миёна барои масивҳои динамикӣ (Swift Array).
  • Илова кардан/баровардан дар оғоз ё дар миёна: O(n) — вақти хатӣ, зеро мумкин аст, ки унсурҳоро кӯчондан лозим шавад.

Мисол дар Swift:

// Эҷоди масиви сатрҳо
var names: [String] = ["Alice", "Bob", "Charlie"]

// Дастрасӣ ба унсур тавассути индекс
let first_name = names[0] // "Alice"

// Илова кардани унсур
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

// Баровардани унсур
names.remove(at: 1) // ["Alice", "Charlie", "David"]

// Итерировать дар масив
for name in names {
    print(name)
}

сохтор дарунӣ (барои масивҳои динамикӣ аз навъи Swift Array):

Масивҳои динамикӣ одатан дар рӯи буфери статикӣ амалӣ карда мешаванд. Вақте ки қобилияти буфер ба охир мерасад, буфери нав ва калонтар таъин карда мешавад ва унсурҳои кӯҳна нусхабардорӣ мешаванд (reallocation). Ин амалиёт барои илова кардан ба охир, дар умум, O(1) мебошад.