Sıralama Algoritmaları nedir ?
Sıralama algoritmaları çok sayıda birim ve öğeyi en düşükten en yükseğe veya en yüksekten en düşüğe gibi belirli yapıda sırlamamızı sağlayan algoritmalardır.
Örnek olarak bir haber sitesinin içerisinde bulunan haberlerin ilk sayfasında daha güncel haberleri listeleyeceğiniz gibi sayfa sayısını arttırdıkça haberlerin daha eskiye ait olması veya bir e-ticaret sitesinde aradığınız eşyayı en çok puan alan şeklinde filtrelediğinizde isteğiniz doğrultusunda puansal olarak azalan satırlar görmeniz belirli sıralama algoritmaları ile gerçekleşmektedir.
Selection Sort
Selection Sort için basit bir sıralama algoritması diyebiliriz. Bu algoritma elinizdeki veri listesini bir nevi iki tarafa böler. Sıralanmış veriler sol tarafta kalırken sıralanmamış veriler ise sağ tarafta kalırlar. Algoritma veri listesi içerisinden sıra ile en küçük veriyi bulur ve onu başa alır (swap). Bir sonraki taramasında ilk sıradaki veriyi artık karşılaştırmayacaktır çünkü o zaten sıralanmıştır ve yeri bellidir. Dizinin ikinci en küçük verisini bulur ve onu 2. sıraya yerleştirir. Bu şekilde devam ederek bir liste içerisinde bulunan verileri belirli bir yapıda sıralar.
Algoritma adımları :
1- En küçük veriyi bulabilmek için veri listesinin içinde bulunan bütün elamanlarda gezinti yapmak.
2- Listenin son elemanına geldiğinizde en küçük elamanı bulmuş olursunuz.
3- Henüz sıralanmamış kısımda kalan ilk eleman ile bulduğunuz en küçük elemanın yerlerini değiştirin.
4- Dizinin geri kalanında bu adımları tekrar edin.
Peki bu algoritma bir dizi veriyi sıralamak için ne kadar çaba sarf ediyor ?
Şöyle ki elimizde var olan dizinin ilk halinde elemanların hangi slotlarda bulunduklarını bilemeyiz bu yüzden en kötü ihtimali (worst case) referans alarak yaklaşacağız. Başlangıçta n elemanlı bir dizinin en küçük öğesini bulup ilk sıraya yerleştirmesi için bütün bir diziyi taraması gerekir. İkinci aramasında dizinin yine tamamını tarayacaktır lakin bu sefer yapacağı karşılaştırma n-1 defa olacaktır.
Veri dizisinin içini = n^2 şeklinde tarar iken dizi içinde n + n-1 + n-2 + n-3 … adet karşılaştırma yapar.
Teorik olarak bu durumu anladıysak artık Java programlama dili ile bir uygulamasını yapalım ne dersiniz ?
Github : https://shorturl.at/dnqwQ
Main methodumuzun içerisinde ilk olarak bir adet sıralanmamış bir veri dizimiz bulunuyor. Bu veri dizisinin ilk halini yazdırıyoruz. Sonrasında oluşturduğumuz selectionSort methodu ile veri dizisini Selection Sort algoritmasına uygun bir şekilde sıralıyoruz. Method içerisinde iç içe iki farklı döngümüz bulunuyor. İlk döngü liste içerisinde adım adım ilerler iken ikinci döngümüz karşılaştırmayı yapıyor ve en düşük sayıyı buluyor.
Logcat ekranımız :
Okuduğunuz için teşekkür ederim. Bir sonraki yazıda görüşmek üzere kendinize iyi bakın ve sağlıcakla kalın 🙂