Anotasyon

Temel java Dersleri – Dizilerde Sıralama (Array Sort)

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]<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.

 

76

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

4 Yorum

  • Merhabalar…
    Global alanda int y diye degisken olusturup class’a ait dizi şeklinde referans olusturup siralama fonksiyonunda hata veriyo
    ornegin
    Merhaba m[]=new merhaba()
    M[0].y=4
    Arrays.sort(m.y)
    Yardimci olursaniz sevinirim iyi gunler…

  • Benim array sort yorumum

    package Package1;

    public class Deneme34 {
    public static void main (String[] args)
    {

    int[] dizi = new int[10];

    for(int i=0; i-1;i–){

    for(int a=dizi.length-1;a>-1;a–){

    if(dizi[i]>dizi[a]){

    int c= dizi[a];
    dizi[a]=dizi[i];
    dizi[i]=c;

    }

    }

    }

    System.out.println(” “);

    for (int i=0;i<dizi.length;i++)
    {
    System.out.print(" "+dizi[i]);
    }

    }

    }

  • Dizideki her elemanı tek tek döngüye sokarak kendisinden büyük kaç eleman olduğunu saydırıp sayaca atayarak index ini bulup sıralayabiliriz.Aynı değere sahip elemanları üstüne yazacağından elemanları tekrar döngüye sokarak değeri 0 olanları kendinden önceki değeri 0 olmayan elemanın değerini atayarak yeniden sıralama yaparsak dizi sıralanmış olur 🙂

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?