Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Temel Java Dersleri serimize bu dersimizde Dizilerde Sıralama olayını anlatacağız. Java’da birden fazla sıralama yöntemi bulunmaktadır. Selection Sort, Buble Sort, Quick Sort,Merge Sort … liste bu şekilde uzayıp gitmektedir. Ben bunların bir çoğunu özellikle Collections’ları(Lists, Sets, Maps) anlattıktan sonra anlatacağım. Ancak dizilerde de gerekli olacağından bu dersimde Selection Sort’u (Seçmeli Sıralama) anlatmaya çalışacağım.
Selection Sort
Öncelikle Seçmeli Sıralama’nın mantığını anlatmaya çalışacağım, sonrasında ise bir örnekle devam edeceğim. Seçmeli sıralamada, sırası ile tüm elemanlar ele alınıp, dizinin sonuna kadar o elemandan küçük eleman olup olmadığı kontrol edilir ve en küçük eleman bulunup eldeki sayı ile değiştirilir.
Daha açık anlatmak gerekirse , listenin 1. elemanın değeri alınır ve dizinin sonuna kadar tüm elemanlar kontrol edilir en küçük eleman bulunur ve 1. sıradaki eleman ile yer değiştirilir. Artık en küçük eleman 1. sırada yer almaktadır. 1. sıradaki elemanı tekrardan kontrol etmek gerekmediği için 2.sıradaki elemana geçilir ve aynı işlem tekrarlanarak son elemana kadar gidilir.
Bununla ilgili anlamanızı kolaylaştıracak internetten bulduğum bir resim paylaşmak istiyorum.
Gördüğünüz gibi öncelikle 7 yi ele alarak 7 den küçük, en küçük eleman bulunmuş (1) ve yerleri değiştirilmiş. Sonrasında 4 ele alınarak ondan küçük en küçük eleman(2) ile yer değiştirilerek sıralamaya devam edilmiş.
Bir tanede video paylaşarak anlamanızı kolaylaştırmak istiyorum. Video’da dans ederek selection sort yapıyorlar. Ben çok eğlenceli buldum. Umarım sizinde anlamanıza fayda sağlar.
Eeee o kadar resim paylaştık, video koyduk ama hala java kodu yok meydanda diyenler için kendi oluşturmuş olduğum liste’yi nasıl selection sort ile listelediğimi de paylaşıyorum.
Kod üzerinde açıklama yapmaya çalıştım.
/**
* Created by tahakirca on 22/01/2017.
*/
public class SelectionSort {
public static void main(String args[]){
int[] liste = {1, 4, 99, 2, 5, -3, 6, 2,-49,52};//Dizi’mizi oluşturuyoruz
for (int i = 0; i < liste.length-1; i++) { //Dizimizin değerlerini sırası ile alıyoruz
int sayi = liste[i]; //sıradaki değeri sayi değişkenine atıyoruz
int temp = i; //sayi 'nin indeksini temp değerine atıyoruz
for (int j = i+1; j < liste.length ; j++) { //dizimizde i' den sonraki elemanlara bakıyoruz
if(liste[j] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 /** * Created by tahakirca on 22/01/2017. */ public class SelectionSort { public static void main(String args[]){ int[] liste = {1, 4, 99, 2, 5, –3, 6, 2,–49,52};//Dizi’mizi oluşturuyoruz for (int i = 0; i < liste.length–1; i++) { //Dizimizin değerlerini sırası ile alıyoruz int sayi = liste[i]; //sıradaki değeri sayi değişkenine atıyoruz int temp = i; //sayi ‘nin indeksini temp değerine atıyoruz for (int j = i+1; j < liste.length ; j++) { //dizimizde i’ den sonraki elemanlara bakıyoruz if(liste[j]<sayi){ //sayi değişkeninden küçük sayı var mı sayi = liste[j]; //varsa sayi değişkenimizide değiştiriyoruz temp = j; //indeks değerinide değiştiriyoruz } } if(temp != i){ //temp değeri başlangıç değeri ile aynı değil ise , yani list[i]’nin değerinden küçük sayı varsa onları yer değiştiriyoruz liste[temp] = liste[i]; liste[i] = sayi; } } for (int sayi:liste) { //Bu kısım sıralama ile ilgili değil sadece sıralamanın doğru calısıp calısmadıgını kontrol etmek için System.out.println(sayi); } } } Konsol Çıktısı: –49 –3 1 2 2 4 5 6 52 99
Yukarıda hem resim ile , hem video ile , hemde java kod ve üzerinde ki açıklamalar ile Dizilerde Sıralama‘yı , selection sort ile yani seçmeli sıralama ile anlatmaya çalıştım. Yazının girişinde de bahsettiğim gibi birden fazla sort metotu vardır. İlerleyen derslerimizde onları tek tek anlatmaya çalışacağım. Çünkü Algoritma adına sorting yani sıralama işlemleri çok önemlidir. Benim bu dersimde anlatmak istediklerim bu kadar. Bir sonraki dersimde Java’nın Array işlemlerini kolaylaştırmak için hazırladığı Arrays Class‘ından bahsedeceğim. Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Tüm Temel Java Dersleri için tıklayınız. 60