AMP Analytics -->

Teknoloji Rehberi

17 Nisan 2025 Perşembe

Python'da Selection (Seçim Algoritması) Detaylı Anlatım

 

Python'da Selection (Seçim Algoritması) Detaylı Anlatım

Selection (seçim) algoritması, bir dizideki en küçük (veya en büyük) elemanı bulmaya yarayan basit bir algoritmadır. Aynı zamanda selection sort (seçerek sıralama) algoritmasının da temelini oluşturur.

Selection Algoritmasının Temel Mantığı

Selection algoritmasının temel adımları:

  1. Dizinin ilk elemanını minimum (veya maksimum) olarak işaretle

  2. Dizinin kalan elemanlarını tarayarak daha küçük (veya büyük) bir eleman bul

  3. Bulunan yeni minimum (veya maksimum) elemanı başlangıçtaki elemanla yer değiştir

  4. Bu işlemi dizinin sıralanmış kısmına ekleyerek tekrarla

Python'da Selection Algoritması Uygulaması

1. Minimum Elemanı Bulma

python
Copy
def find_min(arr):
    min_index = 0
    for i in range(1, len(arr)):
        if arr[i] < arr[min_index]:
            min_index = i
    return min_index

# Örnek kullanım
numbers = [64, 25, 12, 22, 11]
min_idx = find_min(numbers)
print(f"En küçük eleman: {numbers[min_idx]}, indeksi: {min_idx}")

2. Maximum Elemanı Bulma

python
Copy
def find_max(arr):
    max_index = 0
    for i in range(1, len(arr)):
        if arr[i] > arr[max_index]:
            max_index = i
    return max_index

# Örnek kullanım
numbers = [64, 25, 12, 22, 11]
max_idx = find_max(numbers)
print(f"En büyük eleman: {numbers[max_idx]}, indeksi: {max_idx}")

3. Selection Sort (Seçerek Sıralama)

python
Copy
def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        # Minimum elemanın indeksini bul
        min_idx = i
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        # Bulunan minimum elemanı mevcut pozisyona yerleştir
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

# Örnek kullanım
numbers = [64, 25, 12, 22, 11]
sorted_numbers = selection_sort(numbers)
print("Sıralanmış dizi:", sorted_numbers)

Algoritmanın Karmaşıklığı

  • Zaman Karmaşıklığı: O(n²) - İç içe iki döngü olduğu için

  • Uzay Karmaşıklığı: O(1) - Yerinde sıralama yaptığı için ekstra bellek kullanımı yok

Avantajları ve Dezavantajları

Avantajları:

  • Basit ve anlaşılır bir algoritma

  • Küçük veri setleri için kullanılabilir

  • Yerinde sıralama yapar (ek bellek gerektirmez)

Dezavantajları:

  • Büyük veri setleri için verimsiz

  • O(n²) zaman karmaşıklığına sahip

  • Diğer O(n²) algoritmalara göre (örneğin bubble sort) genellikle daha yavaş

Pratik Uygulama Örneği

python
Copy
def selection_algorithm(arr, k):
    """
    Dizideki k. en küçük elemanı bulma (0-based index)
    """
    for i in range(k+1):
        min_idx = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr[k]

# Örnek kullanım
data = [7, 10, 4, 3, 20, 15]
k = 3  # 4. en küçük eleman (0-based index)
result = selection_algorithm(data, k)
print(f"{k}. en küçük eleman: {result}")

Selection algoritması, basitliği nedeniyle öğrenme amaçlı iyi bir başlangıç noktasıdır, ancak pratik uygulamalarda daha verimli algoritmalar (quicksort, mergesort vb.) tercih edilir.

Hiç yorum yok:

Yorum Gönder

Popular Posts