mehmetduran.com - Paylaşmak Güzeldir...
C# ile Merge Sort Algoritması
Bu yazımda okulda almış olduğum derslerden olan Algoritmalar dersinde algoritmasını gördüğümüz ve c# ile program olarak ödev verilen Merge Sort algoritmasını paylaşacağım. Elimizde bulunan rakamsal verileri sıralamamıza yarayan bu yöntemi c# ile algoritmasına uygun bir biçimde kodladım. Merge sort ile verileri belli bir düzeye kadar parçaladıktan sonra verileri teker teker kendi aralarında karşılaştırıp, yerlerini değiştiriyoruz. Daha sonra sıralı küçük parçaları birleştirerek verilerimizi sıralı bir biçimde elde ediyoruz. Bu işlem için recursive bir yapı kullanılmakta. Hazırladığım örnekte tüm bunları görebilirsiniz.

Öncelikle merge sort algoritmasını aşağıdaki gibi şematize edebilir ve kolayca anlayabiliriz.

C# ile Merge Sort Algoritması

Daha sonra şematize edilmiş bu yapıyı aşağıdaki gibi kodlayarak merge sort algoritmasını gerçekleştirmiş oluyoruz.

    private int[] a = { 5, 2, 4, 7, 1, 3, 2, 6 };
    private int[] b = new int[8];
    private int karsilastirma = 0;
 
    public void m_sort(int p, int r)
    {
      if (p < r)
      {
        int q = (p + r) / 2;
        m_sort(p, q);
        m_sort(q + 1, r);
        merge(p, q + 1, r);
      }
    }
 
    public void merge(int p, int q, int r)
    {
      int sb, index, yer;
      sb = q - 1;
      yer = p;
      index = r - p + 1;
      while ((p <= sb) && (q <= r))
      {
        if (a[p] <= a[q])
        {
          b[yer] = a[p];
          yer = yer + 1;
          p = p + 1;
          karsilastirma += 1;
        }
        else
        {
          b[yer] = a[q];
          yer = yer + 1;
          q = q + 1;
          karsilastirma += 1;
        }
      }
      while (p <= sb)
      {
        b[yer] = a[p];
        p = p + 1;
        yer = yer + 1;
        karsilastirma += 1;
      }
      while (q <= r)
      {
        b[yer] = a[q];
        q = q + 1;
        yer = yer + 1;
        karsilastirma += 1;
      }
      for (int i = 0; i < index; i++)
      {
        a[r] = b[r];
        r = r - 1;
      }
    }

Hazırladığım örnek projeyi buradan indirebilirsiniz. Örnek kodlamalarda verdiğim değişkenler derste görmüş olduğumuz algoritmaya uygun bir biçimde verildi. Bunların dışında yaptığım örnekte rakamsal veriler kayit.txt adında bir text dosyasından alınıyor ve sıralanmış veriler sonuc.txt adında bir text içine yazdırılıyor. Ayrıca sonuc.txt dosyasına sıralı veriler yanında karşılaştırma sayısı ve sıralanan veri sayısı da yazdırılıyor.

İyi Çalışmalar.
Mehmet Duran 13 Mart Cuma 2009 2 19290 3,6
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Jquery ve Ajax ile Oylama (Rating) Yapımı XNA Game Studio Creator's Guide (E-Book) Asp ile Sayfa İnclude İşlemleri Deitel C# (E - Book) Jquery ile Dropdownlist Üzerinde Ekleme ve Eleman Aktifleştirme İşlemi
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Şeref Akyüz 07 Mart Pazartesi 2011 00:07 #1
Sıralamanın şematiğini bir çok sitede gördüm onlar mı burdan aldı yoksa siz mi başka yerden aldınız? merak ettim sadece ama cevaplamak zorunda değilsiniz.
Mehmet Duran 08 Nisan Cuma 2011 22:37 #2
@Şeref, zaten bu kodlar hem derslerde hem internet ortamında benzer biçimde yayınlanır. Ben kodları dersteki notlarımdan oluşturmuştum.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Hizmet amaçlı işler başarıya, kar amaçlı olanlar ise başarısızlığa yöneliktir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009