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