Sobes.tech
Middle

Ի՞նչ դասակարգումներ կան հորիզոնականների վերաբերյալ տվյալների կառուցվածքների համատեքստում։

sobes.tech AI

Պատասխան AI-ից

Տվյալների կառուցվածքների համատեքստում, տերմինով "հեմ" (Heap) սովորաբար հասկանում է բինար հեմ (Binary Heap), որը ունի հետևյալ դասակարգումները:

  1. Տեսակի կարգավորում ըստ:

    • Նվազագույն հեմ (Min-Heap): Յուրաքանչյուր հանգույցի արժեքը փոքր է կամ հավասար իր երեխաների արժեքներին: Մարմինը ամենափոքր տարրն է:
    • Մեծագույն հեմ (Max-Heap): Յուրաքանչյուր հանգույցի արժեքը մեծ է կամ հավասար իր երեխաների արժեքներին: Մարմինը ամենամեծ տարրն է:
  2. Արևելքի լրիվության ըստ:

    • Լրիվ բինար հեմ (Complete Binary Heap): Բոլոր մակարդակները, բացի հնարավոր վերջինից, լրիվ են, և վերջին մակարդակի հանգույցները տեղադրված են հնարավորինս ձախ։ Այս հատկությունը կարևոր է, քանի որ թույլ է տալիս արդյունավետ պահել հեմը զանգվածում:
    // Օրինակ կառուցվածք հեմի հանգույցի համար (կոնցեպտի ցուցադրության համար)
    public class HeapNode<T>
    {
        public T Value { get; set; }
        // Հղումներ երեխաների հանգույցներին չեն միշտ բացահայտված զանգվածային ներկայացումում
        public HeapNode<T> Left { get; set; }
        public HeapNode<T> Right { get; set; }
    }
    

Չնայած գոյություն ունեն այլ տեսակի հեմեր, ինչպիսիք են Fibonacci հեմը (առաջադեմ ալգորիթմների համար) կամ բինոմի հեմը, մեծամասնության դեպքում, "հեմ" տերմինը հղում է հենց լրիվ բինար նվազագույն կամ առավելագույն հեմին, քանի որ դրանք լայն կիրառություն ունեն դասավորության ալգորիթմներում (օրինակ, Heapsort) և առաջնահերթության հերթերում։