Ana Sayfa Algoritma ve Programlama Sıralama Algoritmaları Merge Sort

Sıralama Algoritmaları Merge Sort

Merhaba arkadaşlar. Yazılarımıza sıralama algoritmaları ile devam ediyoruz. Bu yazımda başlıktan da anlaşılacağı gibi Merge Sort (Birleştirmeli Sıralama) dan bahsedeceğim. Aslında kullanım amacı isminden anlaşılıyor. Çalışma mantığını bir örnekle incelersek;

Sıralama Algoritmaları

38-27-43-3-9-82-10 şeklinde sırasız bir dizimiz olsun ve bunu Merge Sort algoritmasıyla sıralayalım. Dizi kendisini sürekli ikiye bölerek ortaya çıkan en küçük parçaları kendi aralarında sıralayacak.

Adım 1: 38-27-43-3-9-82-10 dizimiz bu şekilde.

bm-institute

Adım 2: Dizi kendisini 38-27-43-3 ve 9-82-10 olarak iki alt diziye ayırır.

Adım 3: Bu iki alt dizi de kendisini ikiye bölerek; 38-27;43-3 ve 9-82;10  şeklinde alt dizileri oluştururlar.

siber güvenlik

Adım 4: Bu alt diziler kendisi içinde sıralanır ve alt dizilerimiz; 27-38;3-43 ve 9-82;10 şekline gelirler.

Adım 5: Alt dizilerimiz sıralandıktan sonra tekrar birleştirilerek; 3-27-38-43 ve 9-10-82 dizilerini oluştururlar

Adım 6: Her iki diziden elemanlar sırasıyla seçilerek tek bir dizide birleştirildi ve dizi  3-9-10-27-38-43-82 şeklinde sıralanmış oldu.

Bu şekilde bayağı bir karışık olduğu çok belli :) Hemen görselle destekleyelim.

Merge_sort_animation

ve C# kodları;

static public void MainMerge(int[] numbers, int left, int mid, int right)

{

int[] temp = new int[25];

int i, eol, num, pos;

eol = (mid - 1);

pos = left;

num = (right - left + 1);

while ((left <= eol) && (mid <= right))

{

if (numbers[left] <= numbers[mid])

temp[pos++] = numbers[left++];

else

temp[pos++] = numbers[mid++];

}

while (left <= eol)

temp[pos++] = numbers[left++];

while (mid <= right)

temp[pos++] = numbers[mid++];

for (i = 0; i < num; i++)

{

numbers[right] = temp[right];

right--;

}

}

static public void SortMerge(int[] numbers, int left, int right)

{

int mid;

if (right > left)

{

mid = (right + left) / 2;

SortMerge(numbers, left, mid);

SortMerge(numbers, (mid + 1), right);

MainMerge(numbers, left, (mid + 1), right);

}

}

static void Main(string[] args)

{

Console.Write("Dizinin eleman sayısını giriniz:");

int max = Convert.ToInt32(Console.ReadLine());

int[] numbers = new int[max];

for (int i = 0; i < max; i++)

{

Console.Write("Dizinin [" + (i + 1).ToString() + "]. Elemanını giriniz : ");

numbers[i] = Convert.ToInt32(Console.ReadLine());

}

Console.Write("Dizinin elemanları: ");

Console.Write("\n");

for (int k = 0; k < max; k++)

{

Console.Write(numbers[k] + " ");

Console.Write("\n");

}

Console.WriteLine("MergeSort algoritması ile sıralandıktan sonra dizinin hali ");

SortMerge(numbers, 0, max - 1);

for (int i = 0; i < max; i++)

Console.WriteLine(numbers[i]);

Console.ReadLine();

}

Bu yazımız da buraya kadar arkadaşlar. Bundan sonra istek konu bildirebilirsiniz. İletişim adreslerim profilimde mevcut veya yazılarıma yorum atarak da isteklerinizi bildirebilirsiniz. Hepinize kolay gelsin. Umarım yardımcı olabilmişimdir. Bir sonraki yazımızda görüşmek üzere hoşçakalın!

arıcılık malzemeleri
Avatar
Konuk Yazar
Konuk yazarlarımız tarafından sitemize yollanan yazılar bu hesaptan yayınlanmaktadır. İsimsiz yazı yayınlamak istiyorsanız iletişim bölümünden sizlerde yazılarınızı yollayabilirsiniz.

1 Yorum

  1. Merhabalar Anıl bey. Sizden bir ricam olacaktı. Eminim sizin için çok basit olacaktır. 7 tane olan sıralama algoritmasının akış diyagramları hakkında yardımcı olabilir misiniz? Insertion Sort, Selection Sort, Bubble Sort, Radix Sort, Merge Sort, Quick sort ve Heap Sort. Çok önemli ve acil olarak lazım lütfen yardımcı olun.

Düşünceleriniz Nedir?

Lütfen yorumunuzu buraya yazınız.
Lütfen isminizi buraya yazını.

Yazar Ol Yenilenebilir Enerji Teknolojileri arıcılık malzemeleri siber güvenlik

Yeni Yazılar

Takla Atarken Fotoğrafı Bulunan Jandarma Helikopteri Sikorsky S-70’in Hikayesi

Yabancı haber sitelerine kadar düşen bu meşhur fotoğrafla ilgili internette bir bilgi kirliliği mevcut. Doğrusunu dinliyoruz. İnternette sağda solda bu helikopteri takla atarken gösteren bir...

Osteoartrit Nedir Neden Olur Tedavisi Nedir

Osteoartrit; eklem kıkırdağında erozyon, eklem kenarlarında yeni kemik oluşumu, eklem aralığının kaybı, eklem kıkırdağında yumuşama ve incelme, eklem sıvısında ve kapsülünde biyokimyasal değişikliklerin eşlik...

Halide Edip Adıvar Handan Özeti

Halide Edip Adıvar’ın Handan adlı bu eseri, mektuplardan oluşan bir roman olma özelliğini taşımaktadır. Romanda, kitabında ismi olan başkarakter Handan isimli bir kadın bulunmaktadır....

Some Ethical Problems For Turkey

Examples of creating solutions to some of the ethical problems existing in Turkey, I wanted to share with you. I believe that we should...

Mühendislik Maaşları

Acil Tıp Teknisyeni Maaşları

Bu yazımda acil tıp teknisyeni maaşları hakkında bilgilendireceğim. Sağlık Bakanlığı bünyesinde kaza geçirmiş hastalara fiziki veya ruhen destekleyici ilk müdahaleyi yaparak, hastaneye yetiştirilmesinde önemli...

Biyomedikal Mühendisliği‎ Maaşları

Biyomedikal mühendisi, tüm biyolojik alanlarda ve özellikle tıp alanında kullanılan elektronik aletlerin yapımından, geliştirilmesinden ve işletilmesinden sorumlu kişidir. Bu meslek grubunda da görev ve...

Eczacılık Maaşları

Bu yazımda eczacılık maaşları hakkında bir takım bilgiler vereceğim. Eczacı deyince sadece dükkan sahibi olanlar akla gelmemelidir. Çünkü devlet kurum ve kuruluşlarında ilaç dağıtım...

Elektrik Teknikeri Maaşları

Elektrik teknikeri ne iş yapar? Elektrik tesisatı işlerinde cihazların çizilen projeye uygun olarak yerleştirilmesini sağlayan, işletmelerdeki gerilim hatlarında oluşan arızaların takibini yapan, bu arızalarla...