Merge Sort Algoritması

Merge Sort Algoritması

Merge Sort Algoritması

  3 dakika Okuma Süresi
Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde sıralama algoritmalarından biri olan Merge Sort Algoritması'nı anlatacağım. Hadi başlayalım !

Bu algoritma sıralanacak diziyi her seferinde ikiye bölerek, bölünmüş ikili dizileri aralarında sıralar ve hepsini geri birleştirerek başlangıçtaki diziyi sıralar.
Yani sıralı olmayan listeyi ortadan ikiye böler, her bir parçayı da ikiye böler, onları da ikiye böler vs, sonuç olarak elimizde her biri iki elemandan oluşan diziler olur ve bu dizileri kendi aralarında sıralayarak tekrardan birleştirme işlemi yapar.
Örnek bir dizi sıralaması şöyle olmakta;
Merge Sort Algoritması

Böl ve yönet algoritmalarından biridir.O(nlogn) karmaşıklığına sahiptir.
Karmaşıklığı küçük olduğu için hızlıdır ve çok büyük dizileri bile kısa sürede sıralayabilir.

Kod yapısını inceleyecek olursak, diziyi ikiye bölen (parçalayan) ve her bölünmüş dizide sıralama yapıp birleştiren olmak üzere 2 farklı fonksiyon yapısına sahiptir.
Parçalama algoritması recursive yani kendini çağıran bir fonksiyondur.
Şimdi bu anlattıklarımıza uygun olarak C# kodumuzu yazalım;

void Merge(int[] dizi, int l, int m, int r)
{
    int i, j, k;
    int n1 = m - l + 1;
    int n2 =  r - m;
    int L[n1], R[n2];
    for (i = 0; i < n1; i++)
        L[i] = dizi[l + i];
    for (j = 0; j < n2; j++)
        R[j] = dizi[m + 1+ j];
    i = 0;
    j = 0;
    k = l;
    while (i < n1 && j < n2)
    {
        if (L[i] <= R[j])
        {
            dizi[k] = L[i];
            i++;
        }
        else
        {
            dizi[k] = R[j];
            j++;
        }
        k++;
    }
    while (i < n1)
    {
        dizi[k] = L[i];
        i++;
        k++;
    }
    while (j < n2)
    {
        dizi[k] = R[j];
        j++;
        k++;
    }
}
void mergeSort(int arr[], int l, int r)
{
    if (l < r)
    {
        int m = l+(r-l)/2;
        mergeSort(arr, l, m);
        mergeSort(arr, m+1, r);
        merge(arr, l, m, r);
    }
}
Evet kodumuzu da yazdık, herşey tamamlandı :) Artık Merge Sort Algoritması'nı kullanarak dizilerinizi sıralayabilirsiniz.

Ayrıca Merge Sort Algoritması'nın Alman halk oyunları kullanılarak yapılan canlandırmasını da izlemek isteyebilirsiniz. Güzel bir görsel anlatım olmuş :)
Bu dersimizde bu kadardı, tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.


  • İçeriği Paylaş:

İÇERİĞİ DEĞERLENDİR

Toplam Değerlendirme Sayısı: 0
Toplam Değerlendirme: 0 / 5

Cevap Yaz