C# Dizi Sıralama

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda dizi sıralamayı anlatacağım. Hadi başlayalım !
C#’ta dizi sıralamak için 2 farklı yolumuz var; Birincisi hazır fonksiyon kullanmak. İkincisi kendi kodumuzu yazmak. Ben her ikisinide anlatacağım, öncelikle birinci yoldan başlayalım;
Bu yöntemde doğrudan C#’ın kendi fonksiyonlarından birini kullanacağız. Bu fonksiyon ise Array sınıfı altında static tipte bulunan yani bulunduğu sınıftan yeni bir nesnesi türetilmeden kullanılabilen Sort() fonksiyonu. Bu fonksiyon sıralanacak diziyi parametre olarak istiyor ve void türünde olduğu için geriye herhangi bir şey döndürmüyor. Örneğin 1, 5, 2, 7, 3, 9, 10, 4 elemanları olan bir diziyi Array.Sort() fonksiyonunu kullanarak sıralayalım;
int[] dizi = {1, 5, 2, 7, 3, 9, 10, 4};
Array.Sort(dizi);
Bu fonksiyon void tipte fakat parametre olarak gönderdiğimiz diziyi küçükten büyüğe doğru listeliyor, yani ana diziyi değiştiriyor.
İkinci yolumuz ise kendi fonksiyonumuzu yazmak dedim ya, işte bu yol Array.Sort() fonksiyonundan biraz daha uzun kod yazmamıza sebep olacak fakat Array.Sort() fonksiyonunda da birazdan anlatacağım yol izlenmekte, yani işin arka tarafında bunlar var.
Bir diziyi sıralamak için öncelikle tüm diziyi gezmemiz ve küçükten büyüğe doğru tespit etmemiz gerekiyor. Bunun için de tüm diziyi döngü ile döneceğiz fakat bir kere döngü ile dönersek ilgili sayıdan daha küçük bir sayı olup olmadığını anlayamayız, bunu da anlayabilmek için tüm diziyi iç içe 2 kere döngü ile dönmemiz gerekecek. Bunun için en uygun döngü for döngüsü. Çünkü dizi üzerinde değişiklikler yapacağımız ve for döngüsü ile index numaraları üzerinden de olsa dizi elemanlarına ulaşabildiğimiz ve değiştirebildiğimiz için for döngüsünü kullanmak daha mantıklı olacaktır.
İşlem adımlarımız ise şöyle olacaktır;
- İçteki döngünün her bir adımındaki sayı ile dıştaki döngünün adımında olan sayıyı kıyasla,
- İçteki döngüdeki sayı daha küçükse dizi üzerinde ilgili indexleri yer değiştir,
- Her iki döngü tamamlanana kadar bu işlemi tekrarla
İç içe 2 döngü kullanacağız fakat içteki döngünün dizinin en başından itibaren başlamasına gerek yok, üstteki döngü nerdeyse oradan itibaren bakabiliriz. Çünkü üstteki döngüdeki index numarasına i dersek dizi içerisinde 0-i. indexler arası zaten tarandı, tekrardan bakmaya gerek yok.
Tamam işin arka tarafını anlamaya çalışıyoruz fakat okunabilir bir kod yazmaya da özen göstermemiz gerekiyor. Sayılar arasında yer değiştirme işlemini de bir tane geçici değişken kullanarak yapacağız. Yani büyük olan sayıyı (dış döngüden gelen index numarasına karşılık gelen dizinin elemanını) geçici bir değişkene atayıp iç döngüden gelen index numarasına karşılık gelen dizinin elemanını onun yerine koyacak ve en son da geçici değişkenden dış döngüden gelen index numarasına karşılık düşen dizi elemanı olarak koyacağız.
Bu kadar teorik anlatımın kodu şöyle olacaktır;
for( int i = 0; i < dizi.Length; i++)
{
for(int j = i + 1; j < dizi.Length; j++)
{
if(sayilar[j] < sayilar[i])
{
int temp = sayilar[i];
sayilar[i] = sayilar[j];
sayilar[j] = temp;
}
}
}
Evet C# ile dizi sıralama işlemi bu kadardı, tüm C# yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.