Buradasınız

C Sharp Sıralama Algoritmaları C#

c# dersleri

Sıralama Algoritması

 

Sıralama algoritması, karmaşık olarak girilmiş bir gurup değerin belirli bir düzende sıraya sokulma algoritmasıdır. Örneğin sayıların küçükten büyüğe, büyükten küçüğe, isimler A-Z yada Z-A sıralanma şeklinde denebilir.  Çok fazla sıralama algoritması bulunmaktadır. Sıralama algoritmalarını görmek için Kaynak 

Sıralama algoritmalarından Seçmeli (selection) sıralamadan bahsedeceğiz.

 

Seçmeli Sıralama Algoritması: Dizideki karmaşık değerleri ilk sıradan başlayarak küçük olan ile büyük olanın yerini değiştirme şeklinde yapılmaktadır.

 

sıralama algoritması

 

 Örnek: Bir dizinin seçmeli sıralama algoritması ile dizinin değerlerinin   küçükten büyüğe sıralanması. 5 elemanlı bir diziye değerler atayıp yapalım.

int gecici;
int[] sayilar = new int[5] { 3, 9, 12, 1, 7 };
Console.Write("Dizinin ilk hali: ");
foreach (int deger in sayilar)
{
            Console.Write(deger + " ");           
}
for (int i = 0; i < sayilar.Length-1; i++)
{
            for (int j = i; j < sayilar.Length; j++)
            {
            // >(büyük) işareti <(küçük ) olarak değiştirilirse büyükten küçüğe sıralanır
                        if (sayilar[i] > sayilar[j])                                              
                        {
                                    gecici = sayilar[j];
                                    sayilar[j] = sayilar[i];
                                    sayilar[i] = gecici;
                        }

            }

}
Console.WriteLine();
Console.Write("Dizinin son hali: ");
foreach (int deger in sayilar)
{
            Console.Write(deger + " ");
}
Console.ReadKey();

 

Örnek: 1 ile 100 arasında 25 sayıyı diziye atayıp bu sayıları sıralı şekilde ekrana yazdıralım.

int gecici;
// int[] sayilar = new int[6] { 4, 9, 12, 10, 1, 5 };
int[] sayilar = new int[25];
Random r = new Random();
for (int a = 0; a < sayilar.Length; a++)
{
    sayilar[a] = r.Next(1, 101);
}

Console.WriteLine("Dizinin İlk Hali;");
foreach (int sayi in sayilar)
{
    Console.Write("{0} ", sayi);
}
Console.WriteLine();

for (int i = 0; i < sayilar.Length-1; i++)
{
    for (int x = i + 1; x < sayilar.Length; x++)
    {
        if(sayilar[i]>sayilar[x])
        {
            gecici = sayilar[x];
            sayilar[x] = sayilar[i];
            sayilar[i] = gecici;
        }
    }
}
           
Console.WriteLine("Dizinin Son Hali;");
foreach (int sayi in sayilar)
{
    Console.Write("{0} ", sayi);
}
Console.ReadKey();

 

 

Dizilerde sıralama işlemi için Sort ve Reverse metotalrı kullanılarakta yapılabilir.

 

Dizi Sıralam

Array.Sort(Dizi);-> küçükten büyüğüe sıralama işlemi yapar.

Array.Reverse(Dizi);-> diziyi ters çevirir.

 

Yukarıdaki örneğimizi hazır metotlarla yapalım.

int[] sayilar = new int[5] { 3, 9, 12, 1, 7 };
Console.Write("Dizinin ilk hali: ");
foreach (int deger in sayilar)
{
            Console.Write(deger + " ");           
}
Array.Sort(sayilar);
Array.Reverse(sayilar);
Console.WriteLine();
Console.Write("Dizinin son hali: ");
foreach (int deger in sayilar)
{
            Console.Write(deger + " ");
}
Console.ReadKey();
 

Örnek:  10 elemanlı bir dizi oluşturularak 1 ile 100 arası RASTGELE sayılar atayınız. atanan değerleri ekranda yan yana gösteren ve küçükten büyüğe sıralanmış şekilde yazdıran C# programını yapınız.

int[] sayilar = new int[10];
Random r = new Random();
for (int i = 0; i < sayilar.Length; i++)
{
            sayilar[i] = r.Next(1, 101);
}
foreach (int sayi in sayilar)   
{
            Console.Write(sayi+ " ");              
}

// küçükten büyüğe sıralanmış şekilde de yazalım.

Array.Sort(sayilar);
Console.WriteLine();
foreach (int sayi in sayilar)   
{
            Console.Write(sayi + " ");
}
Console.ReadKey(); 

Örnek: 100 ile 500 arası rastgele 15 sayı tutulacak ve bir diziye aktarılacak. Dizideki elemanlar  normal tutulan şekilde yan yana  ekrana yazdırılacak, küçükten büyüğe sıralanmış şekilde yazdırılacak, büyükte küçüğe sıralanmış şekilde yazdıran C# kodunu yazınız.

int[] sayi=new int[15];
Random r = new Random();
for (int i = 0; i < sayi.Length; i++)
{
    sayi[i] = r.Next(100, 501);
}
foreach (int s in sayi)
{
    Console.Write(s + " ");//"{0} ",s
}
Console.WriteLine();
Console.WriteLine("Sayıları K<B sıralanışı için bir tuşa tıklayın");
Console.ReadKey();
Array.Sort(sayi);
foreach (int s in sayi)
{
    Console.Write(s + " ");//"{0} ",s
}
Console.WriteLine();
Console.WriteLine("Sayıları B<K sıralanışı için bir tuşa tıklayın");
Console.ReadKey();
Array.Reverse(sayi);
foreach (int s in sayi)
{
    Console.Write(s + " ");//"{0} ",s
}
Console.ReadKey();

Örnek: 1 ile 100 arasında 15 sayı bir diziye atanarak, klavyeden bir sayı girilmesi istenerek girilen sayının dizide bulunup bulunmadığını kontrol eden uygulamayı yapınız.

int[] sayilar = new int[15];
Random r = new Random();
bool durum = true;

for (int i = 0; i <sayilar.Length; i++)
{
    sayilar[i] = r.Next(1, 101);
    //Console.Write("{0} ",sayilar[i]);
}

Console.Write("Bir sayı giriniz:");
int sayi = int.Parse(Console.ReadLine());

for (int x = 0; x < sayilar.Length; x++)
{
    if (sayilar[x] == sayi)
    {
        Console.Write("Sayı bulundu"); durum = false; break;
    }               
}
if (durum == true) Console.Write("Sayı Bulunamadı");
Console.ReadKey();

 

Ödev: 10 elemanlı bir dizi oluşturularak.  1 ile 10 arası RASTGELE sayılar atayınız. Yeni 10 elemanlı bir dizi oluşturularak 1 ile 10 arasında klavyeden sayı giriniz. Dizilerdeki elemanları sırasıyla karşılaştırılarak eşit olanların değerlerini ekrana yazdırınız.

 

Ödev: Klavyeden bir sayı girilecek,  girilen sayı kadar 100 ile 500 arası rastgele sayı tutulacak ve bunlar bir diziye aktarılacak. En büyük ve En küçük sayı ekrana yazdıran C# kodunu yazınız.

 

Ödev: Klavyeden 10 arkadaşınızın isimin bir diziye atayın ve arkadaşlarınızın isimleri içinde e ve E harflerinin toplam sayısını bulunuz.

 

Yorum ekle

Konuyla İlgili Yazılar

c# dersleri

10-C#-5 Hata Ayıklama( try-catch)

Kodlama esnasında görünmeyip program çalışma esnasında çıkabilecek hatalar sonucu programamın çalışmaz duruma gelmemesi için hata ayıklamak için try-catch kullanılır... devamı...