Takip et

Sıralama Algoritmaları: Python ile Başlangıç Kılavuzu

Sıralama Algoritmaları: Python ile Başlangıç Kılavuzu

Merhaba! Ben Fatih Soysal ve bu yazıda, programlamanın temel taşlarından biri olan sıralama algoritmalarını, özellikle de Python kullanarak, adım adım ve anlaşılır bir şekilde ele alacağız. Sıralama, verileri belirli bir kritere göre düzenleme işlemidir ve birçok uygulamada kritik bir rol oynar. Örneğin, bir e-ticaret sitesinde ürünleri fiyatlarına göre sıralamak veya bir arama motorunun sonuçları alaka düzeyine göre göstermek gibi. Bu yazıda, en yaygın sıralama algoritmalarını inceleyecek ve bunların Python kodlarını birlikte keşfedeceğiz.

Kabarcık Sıralama (Bubble Sort)

Kabarcık sıralama, en basit sıralama algoritmalarından biridir. Listedeki elemanları tek tek karşılaştırır ve yerlerini gerektiğinde değiştirir. Bu işlem, listenin sonuna kadar tekrarlanır. Adım adım nasıl çalıştığını görelim:


def kabarcık_sıralama(liste):
  n = len(liste)
  for i in range(n-1):
    for j in range(n-i-1):
      if liste[j] > liste[j+1]:
        liste[j], liste[j+1] = liste[j+1], liste[j]
  return liste

liste = [64, 34, 25, 12, 22, 11, 90]
sirali_liste = kabarcık_sıralama(liste)
print("Sıralanmış Liste:", sirali_liste)

Görüldüğü gibi, kabarcık sıralama anlaşılması kolaydır, ancak büyük listeler için oldukça yavaştır. Bu nedenle, büyük veri setleri için daha verimli algoritmalar tercih edilmelidir. Ancak, basitliği nedeniyle öğrenme açısından oldukça faydalıdır.

Seçim Sıralama (Selection Sort)

Seçim sıralama, listede en küçük elemanı bularak ve onu listenin başına yerleştirerek çalışır. Bu işlem, listenin geri kalanı için tekrarlanır. Kabarcık sıralamaya göre daha verimli olsa da, yine de büyük listeler için yeterince hızlı değildir.


def seçim_sıralama(liste):
  n = len(liste)
  for i in range(n):
    min_index = i
    for j in range(i+1, n):
      if liste[min_index] > liste[j]:
        min_index = j
    liste[i], liste[min_index] = liste[min_index], liste[i]
  return liste

liste = [64, 25, 12, 22, 11, 90]
sirali_liste = seçim_sıralama(liste)
print("Sıralanmış Liste:", sirali_liste)

Özetle, seçim sıralama, kabarcık sıralamaya göre daha etkilidir fakat yine de büyük veri setleri için ideal değildir. Daha gelişmiş algoritmaları incelememiz gerekiyor.

Birleştirme Sıralama (Merge Sort)

Birleştirme sıralama, “böl ve yönet” prensibine dayalı, oldukça verimli bir algoritmadır. Listeyi sürekli olarak ikiye böler, alt listeleri sıralar ve sonra bu sıralı alt listeleri birleştirir. Büyük listeler için oldukça hızlıdır ve zaman karmaşıklığı O(n log n)’dir.


def birleştirme_sıralama(liste):
  if len(liste) > 1:
    orta = len(liste) // 2
    sol = liste[:orta]
    sağ = liste[orta:]

    birleştirme_sıralama(sol)
    birleştirme_sıralama(sağ)

    i = j = k = 0

    while i < len(sol) and j < len(sağ):
      if sol[i] < sağ[j]:
        liste[k] = sol[i]
        i += 1
      else:
        liste[k] = sağ[j]
        j += 1
      k += 1

    while i < len(sol):
      liste[k] = sol[i]
      i += 1
      k += 1

    while j < len(sağ):
      liste[k] = sağ[j]
      j += 1
      k += 1
  return liste

liste = [12, 11, 13, 5, 6, 7]
sirali_liste = birleştirme_sıralama(liste)
print("Sıralanmış Liste:", sirali_liste)

Birleştirme sıralama, performans açısından diğerlerine göre çok daha üstündür. Bu nedenle, büyük veri kümeleriyle çalışırken tercih edilmesi gereken bir algoritmadır. Ancak, ekstra bellek kullanımı nedeniyle, yerinde sıralama algoritmaları kadar yer tasarruflu değildir.

Umarım bu yazı, sıralama algoritmalarını anlamanıza yardımcı olmuştur. Daha fazla bilgi ve kaynak için fatihsoysal.com adresini ziyaret edebilirsiniz. Ayrıca, algoritma öğrenimi konusunda daha fazla bilgi için GeeksforGeeks sitesine de göz atabilirsiniz.

#Etiketler: sıralama algoritmaları, python, kabarcık sıralama, seçim sıralama, birleştirme sıralama, algoritma, programlama, başlangıç kılavuzu, veri yapıları


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.