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) բարդություն վերջում ավելացնելու համար։