Merge Sort (Birleştirmeli Sıralama) Algoritması

Selamün Aleyküm Arkadaşlar;

Merge Sort algoritması parçala (böl) ve yönet tekniğiyle yapılır. İlk önce dizi iki parçaya bölünür. Diğer parçalar kendi aralarında bölünür. Her parçadan bir tane kalana kadar bölünürler.

Elimizde şu şekilde bir dizimiz olsun.

SnapCrab_No-0041

 

Dizi son 1 elemanı kalana kadar kendi arasında ikiye bölünür.

SnapCrab_No-0042

 

Sonra bölünen kısımlar kendi aralarında sıralanarak birleştirilir.

SnapCrab_No-0043

 

Ve böylece dizimiz sıralanmış olur. Bu işlemi koda dökelim.

Burada özyineleme işlemi vardır. Her parça kendi arasında hep ikiye bölünmektedir. Bunun için recursive fonksiyon olarak yazalım. Dizimiz bölünerek sağ ve sol olarak iki diziye ayrılmaktadır.Bu sağ ve sol dizide bir eleman kalana kadar bölünmeye devam etmektedir.

Parçalanan kısımların kendi aralarında sıralanıp birleştirme işleminin yapılması gerekir. Bunun içinde Birlestir adında bir fonksiyon yazalım. Gelen iki parça kendi aralarında karşılaştırılacak ve birleştirilecek. Bu işlemde bakılmayan elemanlar dizinin sonuna eklenecektir.

Birleştirme işlemi için fonksiyonumuzu yazdık şimdi bu fonksiyonumuzu Merge_Sort fonksiyonunda çağıralım.

Artık Merge_Sort fonksiyonumuzu çağırarak sıralama işlemini yaptırabiliriz.

Proje dosyasını buradan indirebilirsiniz. (Büyükten küçüğe doğru sıralama yapar.)

PHP

 

Hayırlı günler, sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.