C#

C# Heap Yapısı

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda Heap yapısını anlatacağım. Hadi başlayalım !

Heap, bir dizi elemanın tamamen sıralanmamış olmasına rağmen, içindeki en büyük veya en küçük elemana hızlı bir şekilde erişmek için kullanılan bir veri yapısıdır. C# dilinde heap veri yapısı, PriorityQueue sınıfı kullanılarak uygulanabilir. Bu makalede, C# dilinde heap kullanımı hakkında bilgi vereceğiz ve kod örnekleri ile göstereceğiz.

PriorityQueue Sınıfı

PriorityQueue sınıfı, bir sıra üzerinde öğeleri saklamak için kullanılan bir veri yapısıdır. PriorityQueue sınıfı, içindeki öğeleri, belirli bir öncelik düzenine göre sıralar. Bu nedenle, PriorityQueue sınıfı, heap veri yapısı olarak kullanılabilir. PriorityQueue sınıfı, System.Collections.Generic ad alanında bulunur.

PriorityQueue Sınıfının Yapılandırılması

PriorityQueue sınıfı, bir jenerik yapıdadır. Bu nedenle, sınıfın yapısını tanımlarken öğe türü belirtilmelidir. Örneğin, bir PriorityQueue sınıfı, int türünde öğeleri saklamak için aşağıdaki gibi tanımlanabilir:

PriorityQueue<int> heap = new PriorityQueue<int>();

Bu örnekte, int türünde öğeleri saklamak için bir PriorityQueue nesnesi oluşturulur.

PriorityQueue Sınıfının Özellikleri ve Metodları

PriorityQueue sınıfı, aşağıdaki özelliklere ve yöntemlere sahiptir:

Count Özelliği

Count özelliği, PriorityQueue sınıfındaki öğelerin sayısını döndürür.

int count = heap.Count;

Bu örnekte, Count özelliği kullanılarak heap nesnesindeki öğelerin sayısı alınır.

Enqueue Metodu

Enqueue metodu, PriorityQueue sınıfına öğe eklemek için kullanılır.

heap.Enqueue(5);

Bu örnekte, 5 öğesi heap nesnesine eklenir.

Dequeue Metodu

Dequeue metodu, PriorityQueue sınıfından öğe kaldırmak için kullanılır.

int max = heap.Dequeue();

Bu örnekte, Dequeue metodu kullanılarak heap nesnesinden öğe kaldırılır ve max değişkenine atanır.

Peek Metodu

Peek metodu, PriorityQueue sınıfının en yüksek önceliğe sahip öğesini döndürür.

int max = heap.Peek();

Bu örnekte, Peek metodu kullanılarak heap nesnesinin en yüksek önceliğe sahip öğesi max değişkenine atanır.

Heap Sınıfı

Heap sınıfı, bir diziyi heap veri yapısına dönüştürmek için kullanılabilir. C# dilinde Heap sınıfı yoktur. Ancak, heap veri yapısını uygulamak için, aşağıdaki gibi bir Heap sınıfı tanımlanabilir:

public class Heap<T> where T : IComparable<T>
{
    private List<T> items;

    public Heap()
    {
        items = new List<T>();
    }

    public int Count
    {
        get { return items.Count; }
    }

    public void Add(T item)
    {
        items.Add(item);
        int childIndex = items.Count - 1;
        while (childIndex > 0)
        {
            int parentIndex = (childIndex - 1) / 2;
            if (items[childIndex].CompareTo(items[parentIndex]) >= 0)
            {
                break;
            }
            T tmp = items[childIndex];
            items[childIndex] = items[parentIndex];
            items[parentIndex] = tmp;
            childIndex = parentIndex;
        }
    }

    public T Remove()
    {
        int lastIndex = items.Count - 1;
        T frontItem = items[0];
        items[0] = items[lastIndex];
        items.RemoveAt(lastIndex);

        lastIndex--;

        int parentIndex = 0;
        while (true)
        {
            int childIndex = parentIndex * 2 + 1;
            if (childIndex > lastIndex)
            {
                break;
            }
            int rightChild = childIndex + 1;
            if (rightChild <= lastIndex && items[rightChild].CompareTo(items[childIndex]) < 0)
            {
                childIndex = rightChild;
            }
            if (items[parentIndex].CompareTo(items[childIndex]) <= 0)
            {
                break;
            }
            T tmp = items[parentIndex];
            items[parentIndex] = items[childIndex];
            items[childIndex] = tmp;
            parentIndex = childIndex;
        }
        return frontItem;
    }
}

Bu Heap sınıfı, bir List<T> nesnesi kullanarak heap veri yapısını uygular. Sınıfın Add metodu, bir öğeyi heap veri yapısına eklerken, Remove metodu ise heap veri yapısından öğe kaldırmak için kullanılır.

Heap sınıfı, IComparable<T> arabirimini uygulayan türlerle kullanılabilir. Bu nedenle, Heap sınıfı, heap veri yapısının elemanlarının karşılaştırılmasını yapmak için CompareTo yöntemini kullanır.

Heap Sınıfının Kullanımı

Heap sınıfı, aşağıdaki gibi kullanılabilir:

Heap<int> heap = new Heap<int>();
heap.Add(5);
heap.Add(2);
heap.Add(8);
heap.Add(1);
int max = heap.Remove();

Bu örnekte, bir Heap nesnesi oluşturulur ve Add yöntemi kullanılarak bazı öğeler eklenir. Daha sonra, Remove yöntemi kullanılarak heap veri yapısı içindeki en küçük öğe kaldırılır ve max değişkenine atanır.

Sonuç

Heap veri yapısı, birçok algoritma için temel bir yapı taşıdır. Bu makalede, C# programlama dilinde heap veri yapısının nasıl uygulanacağına ve nasıl kullanılacağına dair ayrıntılı bir açıklama sunulmuştur. Ayrıca, heap veri yapısını uygulamak için Heap sınıfı tanımlanmıştır. Bu sınıf, bir dizi elemanı heap veri yapısına dönüştürmek için kullanılabilir.

Evet C#’ta Heap yapısı ve implementasyonu bu şekilde olmakta. Tüm C# yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu