İçeriğe geç
parazade

Birleştirmeli Sıralama Nedir?

İngilizce: Merge Sort

Yayın: · Son güncelleme:

Birleştirmeli Sıralama Nedir? Kısaca

Birleştirmeli sıralama (merge sort), listeyi tek elemanlı parçalara kadar ikiye bölen, sonra bu parçaları sıralı biçimde birleştirerek bütün listeyi sıralayan böl ve yönet algoritmasıdır. Her durumda O(n log n) sürede çalışır.

Birleştirmeli Sıralama nedir?
İçindekiler
  1. Birleştirmeli sıralama nedir?
  2. Adım adım örnek
  3. Güçlü ve zayıf yönleri
  4. Nerelerde kullanılır?

Birleştirmeli sıralama nedir?

Birleştirmeli sıralama, "iki sıralı listeyi birleştirmek kolaydır" fikrine dayanan bir sıralama algoritmasıdır. Liste önce defalarca ikiye bölünür. Her parça tek elemana inince, parçalar sıralı biçimde yeniden birleştirilir. 1945'te John von Neumann tarafından tanımlandığı kabul edilir.

Adım adım örnek

8, 3, 5, 1 listesini sıralayalım. Önce liste ikiye ayrılır: [8, 3] ve [5, 1]. Sonra her yarı tekrar bölünür: [8], [3], [5], [1]. Tek elemanlı listeler zaten sıralıdır.

Birleştirme aşamasında [8] ile [3] birleşip [3, 8] olur, [5] ile [1] birleşip [1, 5] olur. Son adımda iki listenin baş elemanları karşılaştırılır. 1, 3'ten küçük olduğu için önce o alınır. Ardından 3, sonra 5, en son 8 gelir. Sonuç 1, 3, 5, 8 olur.

Güçlü ve zayıf yönleri

Bu algoritmanın en büyük avantajı öngörülebilirliğidir. Liste ister rastgele ister ters sıralı olsun, süre her zaman O(n log n) olur. Ayrıca kararlıdır: aynı fiyattaki iki ürün, sıralamadan sonra da aynı göreli sırada kalır.

Zayıf yanı bellek kullanımıdır. Birleştirme sırasında geçici listeler gerektiği için, sıralanan veri kadar ek alan ister. Hızlı sıralama bu açıdan daha tasarrufludur.

Nerelerde kullanılır?

Belleğe sığmayan çok büyük dosyaların parça parça sıralanmasında birleştirmeli sıralama standart yöntemdir. Python'un sorted fonksiyonu ve Java'nın nesne listeleri için kullandığı Timsort, birleştirmeli sıralamayı eklemeli sıralamayla harmanlayan karma bir algoritmadır. Bağlı listeleri sıralamak için de en uygun seçeneklerden biridir.

Sıkça Sorulan Sorular

Birleştirmeli sıralama neden kararlıdır?

Birleştirme adımında eşit değerli iki elemandan soldaki önce alınır. Böylece eşit elemanların başlangıçtaki sırası korunur.

Merge sort mu quick sort mu tercih edilmeli?

Bellek sınırlıysa ve ortalama hız önemliyse hızlı sıralama öne çıkar. Kararlılık ve öngörülebilir süre gerekiyorsa ya da veri çok büyükse birleştirmeli sıralama daha uygundur.

İlgili terimler

Sıralama Algoritmaları(Sorting Algorithms)Sıralama algoritmaları, bir listedeki elemanları küçükten büyüğe, alfabetik ya da başka bir ölçüte göre dizmek için kullanılan adım adım yöntemlerdir. Hız, bellek kullanımı ve kararlılık bakımından birbirinden ayrılırlar.Hızlı Sıralama(Quick Sort)Hızlı sıralama (quick sort), listeden bir pivot eleman seçip diğer elemanları pivottan küçükler ve büyükler olarak ikiye ayıran, sonra her parçayı aynı yöntemle sıralayan böl ve yönet algoritmasıdır.Özyineleme(Recursion)Özyineleme (recursion), bir fonksiyonun bir problemi çözmek için kendini daha küçük bir girdiyle yeniden çağırmasıdır. Her özyinelemeli fonksiyonda çağrıları durduran bir temel durum bulunmalıdır, yoksa program sonsuza kadar kendini çağırır.Zaman Karmaşıklığı(Time Complexity)Zaman karmaşıklığı, bir algoritmanın girdi boyutu büyüdükçe kaç adım attığını, yani çalışma süresinin nasıl arttığını ölçen kavramdır. Genellikle Big O notasyonuyla ifade edilir.Liste(List)Liste (list), programlamada birden fazla değeri sıralı tutan, eleman eklenip çıkarılabilen ve değiştirilebilen veri yapısıdır. Python'da köşeli parantezle yazılır: `meyveler = ["elma", "armut"]`.LogLog, bir yazılımın ya da sistemin çalışırken gerçekleşen olayları tarih ve saatiyle kaydettiği kayıttır. Hataları bulmak, kullanıcı hareketlerini izlemek ve güvenlik olaylarını incelemek için kullanılır.Nesne(Object)Nesne (object), nesne yönelimli programlamada bir sınıftan üretilen, kendi verilerini (özellikler) ve davranışlarını (metotlar) taşıyan somut örnektir. Örneğin `Araba` sınıfından üretilen her araç ayrı bir nesnedir.