"Enter"a basıp içeriğe geçin

C# Dizide Nasıl Sıralama Yapılır?

Merhaba arkadaşlar, bugün sizlere C#’ta dizide nasıl sıralama yapılırın cevabını arayacağız. Sıralama, verileri belirli bir kurala göre düzenleme işlemidir. Örneğin, sayıları küçükten büyüğe veya alfabetik olarak harfleri sıralayabiliriz. C#’ta dizileri sıralamak için Array sınıfının Sort metodu kullanılır. Bu metod, diziyi varsayılan olarak küçükten büyüğe veya A’dan Z’ye sıralar. Eğer tersine sıralamak istiyorsak, Reverse metodu kullanabiliriz. Ayrıca, sıralama kriterini kendimiz belirlemek istiyorsak, IComparer arayüzünü uygulayan bir sınıf tanımlayabilir ve Sort metoduna parametre olarak verebiliriz. Şimdi bunları örneklerle görelim.

Öncelikle, bir sayı dizisi tanımlayalım ve ekrana yazdıralım.

int[] numbers = { 5, 3, 8, 1, 6 };
Console.WriteLine("Sırasız dizi:");
foreach (int number in numbers)
{
    Console.Write(number + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Sırasız dizi:
5 3 8 1 6

Şimdi bu diziyi küçükten büyüğe sıralamak için Sort metodu kullanalım.

Array.Sort(numbers);
Console.WriteLine("Sıralanmış dizi:");
foreach (int number in numbers)
{
    Console.Write(number + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Sıralanmış dizi:
1 3 5 6 8

Eğer diziyi büyükten küçüğe sıralamak istiyorsak, Sort metodundan sonra Reverse metodu kullanabiliriz.

Array.Sort(numbers);
Array.Reverse(numbers);
Console.WriteLine("Tersine sıralanmış dizi:");
foreach (int number in numbers)
{
    Console.Write(number + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Tersine sıralanmış dizi:
8 6 5 3 1

Şimdi de bir string dizisi tanımlayalım ve ekrana yazdıralım.

string[] names = { "Ali", "Zeynep", "Mehmet", "Ayşe", "Can" };
Console.WriteLine("Sırasız dizi:");
foreach (string name in names)
{
    Console.Write(name + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Sırasız dizi:
Ali Zeynep Mehmet Ayşe Can

Şimdi bu diziyi alfabetik olarak sıralamak için Sort metodu kullanalım.

Array.Sort(names);
Console.WriteLine("Sıralanmış dizi:");
foreach (string name in names)
{
    Console.Write(name + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Sıralanmış dizi:
Ali Ayşe Can Mehmet Zeynep

Eğer diziyi tersine alfabetik olarak sıralamak istiyorsak, Sort metodundan sonra Reverse metodu kullanabiliriz.

Array.Sort(names);
Array.Reverse(names);
Console.WriteLine("Tersine sıralanmış dizi:");
foreach (string name in names)
{
    Console.Write(name + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Tersine sıralanmış dizi:
Zeynep Mehmet Can Ayşe Ali

Son olarak, diziyi kendi belirlediğimiz bir kurala göre sıralamak istediğimizi varsayalım. Örneğin, isimleri uzunluklarına göre sıralamak isteyelim. Bunun için, IComparer arayüzünü uygulayan bir sınıf tanımlamamız gerekir. Bu sınıfın Compare metodu, iki elemanı karşılaştırır ve hangisinin önce gelmesi gerektiğini belirler. Bu metod, eğer ilk eleman ikinci elemandan küçükse -1, eşitse 0, büyükse 1 değerini döndürür. Biz bu metodda, elemanların uzunluklarını karşılaştıracağız. Şöyle bir sınıf tanımlayalım:

class NameLengthComparer : IComparer
{
    public int Compare(object x, object y)
    {
        string name1 = x as string;
        string name2 = y as string;
        if (name1.Length < name2.Length)
            return -1;
        else if (name1.Length == name2.Length)
            return 0;
        else
            return 1;
    }
}

Bu sınıfı kullanarak, isimleri uzunluklarına göre sıralayabiliriz. Sort metoduna bu sınıfın bir örneğini parametre olarak vermemiz yeterlidir.

Array.Sort(names, new NameLengthComparer());
Console.WriteLine("Uzunluğa göre sıralanmış dizi:");
foreach (string name in names)
{
    Console.Write(name + " ");
}
Console.WriteLine();

Bu kodun çıktısı şöyle olacaktır:

Uzunluğa göre sıralanmış dizi:
Ali Can Ayşe Mehmet Zeynep

Bu şekilde, C#’ta dizileri istediğimiz gibi sıralayabiliriz. Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.