Gönderi

Python Seçerek Sıralama (Selection Sorting) Algoritması

Bu yazımızda, bir Sıralama algoritması olan “Seçerek Sıralama” (Selection Sorting) algoritmasına değineceğiz. Seçerek Sıralama algoritmasını diziyi küçükten büyüğe sıralamak için kullanacağız.

Seçerek Sıralama algoritmasının işleyişi; dizideki en küçük elemanı ilk sıraya yerleştirir, kalanlardan en küçük olanı da ikinci sıraya yerleştirir.Bir eleman kalana kadar bu şekilde devam eder.

Buradaki bağlantıya tıklayarak, sıralama algoritmalarının çalışma şekillerine ait animasyona bakabilirsiniz.

"Kaynak: Vikipedi" Görsel Kaynak:Vikipedi

Örnek olarak, “a” isimli dizinin adım adım küçükten büyüğe sıralanması:

1
a = [3 4 1 1000 -1 25 35 111]

[3, 4, 1, 1000, -1, 25, 35, 111]

[-1, 4, 1, 1000, 3, 25, 35, 111]

[-1, 1, 4, 1000, 3, 25, 35, 111]

[-1, 1, 3, 1000, 4, 25, 35, 111]

[-1, 1, 3, 4, 1000, 25, 35, 111]

[-1, 1, 3, 4, 25, 1000, 35, 111]

[-1, 1, 3, 4, 25, 35, 1000, 111]

[-1, 1, 3, 4, 25, 35, 111, 1000]

Algoritmanın kodları:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def secerek_sirala(Vektor):
    for i in range(len(Vektor)-1):
        enk = Vektor[i]
        enk_indis = i
        for j in range(i+1, len(Vektor)):
            if Vektor[j] < enk:
                enk = Vektor[j]
                enk_indis = j

        depo = Vektor[i]
        Vektor[i] = Vektor[enk_indis]
        Vektor[enk_indis] = depo
        #print(Vektor) Bu komutu aktif ederek sıralama adımlarını görebilirsiniz.
    print(Vektor)

a = [3, 4, 1, 1000, -1, 25, 35, 111]
secerek_sirala(a)

İlk döngü ( i ) en küçük elemanın atanacağı indisi temsil ediyor. İkinci döngüyü ( j ) ise en küçük elemanı bulma amacıyla kullanıyoruz. Dolayısıyla ikinci döngüyü, ilk döngünün bulunduğu yerden bir sonraki sıradan başlatmamız gerekiyor. (for j in range(i+1)) Algoritma son elemanda biteceği ve ikinci döngü, ilk döngüden bir sonraki sıradan başladığı için; ilk döngünün bitiş değeri, “a” dizisinin boyutundan bir eksik olması gerekiyor. Dizinin elemanlarının yerlerini değiştireceğimiz için bir saklama değişkeni(depo) kullanıyoruz. Son iki satırda ise sıralanmasını istediğimiz diziyi tanımlıyoruz ve fonksiyonumuzu çağırıyoruz.

Programın ekran görüntüsü:

  1. satıra sadece “Vektor[i], Vektor[enk_indis] = Vektor[enk_indis], Vektor[i] yazarak kodlamayı kısaltabiliriz.
  1. satırda sıralanmasını istediğimiz diziyi tanımlıyoruz, 17. satırda da fonksiyonumuzu çağırıyoruz.

Aldığımız çıktı:

Sıralama yapmak için “.sort()” fonksiyonunu kullanabilirsiniz.

Bütün Python kodlarına Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!

Github: Github Python

Sitemize destek olmak isteyen sponsorlar için link: Patreon

Kaynak: Carnegie Mellon University, School of Computer Science

Bu gönderi CC BY 4.0 lisansı altındadır.