Categories: .NETC#

C# ile Sıralama Algoritmaları

 

 

C# Console ortamında benim yazdığım, girilen sayıları seçerek (selection sort) veya kabarcık (buble sort) sıralama ile küçükten büyüğe sıralama yapan ve girilen string ifadeleri buble sort algoritmasını kullanarak  alfabetik olarak  yada uzunluğuna (length) göre sıralayan bir programdır.

Program 6 farklı işi yapan metod ile yazılmıştır. Hangi metodun ne işi yaptığı yanında açıklama satırı olarak belirtilmiştir. Genel olarak for döngüsü ve if-else şartları kullanıldığı için anlaşılması oldukça kolaydır. Burada farklı olan bir yer ile ilgili bilgi vermek istiyorum.

Programda string ifadeleri alfabetik olarak sıralatırken kullandığımız algoritmanın içinde ” if (string.Compare(dizi[i], dizi[j]) < 0) ” bu şekilde bir kod parçası var. Burada C# ‘ın compare özelliğini kullandık. Compare girilen iki stringi alfabetik olarak karşılaştırır. Bu karşılaştırmanın sonucunda geriye -1, 0 ve 1 değerlerini döndürür. Eğer iki string birbirine eşitse geriye 0, eğer alfabetik olarak birinci string ikinci stringden önce geliyorsa geriye -1 değerini ve alfabetik olarak birinci string ikinci stringden sonra geliyorsa geriye 1 değerini döndürür. Bizde burada o ‘ dan küçükse yani -1 ise(birinci string ikinci stringden alfabetik olarak önce geliyorsa anlamında) diyerek bu algoritmayı kurduk. Başka anlamadığınız bir yer olursa sorabilirsiniz.

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
 
namespace SiralamaAlgoritmalari
{
    class Program
    {
        public static void selection_sort(int[] dizi, int a)// Seçerek sıralama(selection sort) yoluyla sayıları küçükten büyüğe sıralayan algoritmadır.
        {
            int i, j, en_kucuk, aklimda;
 
            for (i = 0; i < a - 1; i++)
            {
                en_kucuk = i;
                for (j = i + 1; j < a; j++)
                {
                    if (dizi[j] < dizi[en_kucuk])
                    {
                        en_kucuk = j;
                    }
                }
                aklimda = dizi[i];
                dizi[i] = dizi[en_kucuk];
                dizi[en_kucuk] = aklimda;
            }
        }
 
        public static void buble_sort(int[] dizi)// Kabarcık sıralama (buble sort) yoluyla sayıları küçükten büyüğe sıralayan algoritmadır.
        {
            int aklimda;
 
            for (int i = 0; i < dizi.Length - 1; i++)
            {
                for (int j = 1; j < dizi.Length - i; j++)
                {
                    if (dizi[j] < dizi[j-1])
                    {
                        aklimda = dizi[j-1];
                        dizi[j - 1] = dizi[j];
                        dizi[j] = aklimda;
                    }
                }
            }
        }
 
        public static void buble_string(string[] dizi)//Kabarcık sıralama (buble sort) alfabetik olarak sıralama yapan algoritmadır.
        {
            string aklimda;
 
            for (int i = 0; i < dizi.Length; i++)
            {
                for (int j = 0; j < dizi.Length; j++)
                {
                    if (string.Compare(dizi[i], dizi[j]) < 0)
                    {
                        aklimda = dizi[i];
                        dizi[i] = dizi[j];
                        dizi[j] = aklimda;
                    }
                }
            }
        }
 
        public static void buble_string_uzunluk(string[] dizi)//Kabarcık sıralama (buble sort) string uzunluğuna göre sıralama yapan algoritmadır.
        {
            string aklimda;
 
            for (int i = 0; i < dizi.Length-1; i++)
            {
                for (int j = 1; j < dizi.Length - i; j++)
                {
                    if (dizi[j].Length < dizi[j-1].Length)
                    {
                        aklimda = dizi[j-1];
                        dizi[j-1] = dizi[j];
                        dizi[j] = aklimda;
                    }
                }
            }
        }
 
        public static void yazdir_string(string [] dizi, int n)// String dizileri ekrana yazdırmak için bu algoritmayı kullanıyoruz.
        {
            for (int i = 0; i < n; i++)
            {
                if (i == n - 1)
                {
                    Console.Write("{0} ", dizi[i]);
 
                }
                else
                {
                    Console.Write("{0}-", dizi[i]);
                }
            }
        }
 
        public static void yazdir_number(int[] dizi, int n)// Number dizileri ekrana yazdırmak için bu algoritmayı kullanıyoruz.
        {
            for (int i = 0; i < n; i++)
            {
 
                if (i == n - 1)
                {
                    Console.Write("{0} ", dizi[i]);
 
                }
                else
                {
                    Console.Write("{0}-", dizi[i]);
                }
            }
        }
 
        static void Main(string[] args)
        {
 
            char cevap;
            try
            {
                int secim=0;
                int a=1;
                do
               {
                 Console.Clear();
                 //-------
                 Console.SetWindowSize(125, 40);
                 Console.Title = "www.semihduran.com";
                 Console.WriteLine("<<<<< © 2011 Semih DURAN www.semihduran.com >>>>>");
                 Console.WriteLine();
                 Console.WriteLine(" C# SIRALAMA ALGORİTMALARI (SELECTİON SORT VE BUBLE SORT İLE SAYI VE STRİNG İFADE SIRALAMA PROGRAMI ");
 
                 Console.WriteLine();
                 Console.WriteLine("1 --> Selection Sort (seçerek sıralama) algoritmasını kullanarak sayıları sıralamak : ");
                 Console.WriteLine();
                 Console.WriteLine("2 --> Buble Sort (kabarcık sıralama) algoritmasını kullanarak sayıları sıralamak :");
                 Console.WriteLine();
                 Console.WriteLine("3 --> Buble Sort (kabarcık sıralama) algoritmasını kullanarak string ifadeleri ALFABETİK olarak sıralamak :");
                 Console.WriteLine();
                 Console.WriteLine("4 --> Buble Sort (kabarcık sıralama) algoritmasını kullanarak string ifadeleri UZUNLUKLARINA göre sıralamak :");
                 Console.WriteLine();
                 Console.WriteLine("5 --> ÇIKIŞ :");
 
                 Console.WriteLine();
                 do
                 {
                  Console.Write("Lütfen gerçekleştirmek istediğiniz işlemin numarasını seçerek ENTER 'a basın :");
                  secim = Convert.ToByte(Console.ReadLine());
                  }while (secim<1 || secim>5);
                  switch(secim)
                  {
                   case 1:
 
                          Console.WriteLine();
                          Console.WriteLine(" Selection Sort ile sayıları küçükten büyüğe sıralama bölümüne hoş geldiniz. ");
                          Console.WriteLine();
                          Console.WriteLine(" Dizimize kaç adet sayı girmek istiyorsunuz?");
                          int n = Convert.ToInt32(Console.ReadLine());
 
                          int[] dizi1 = new int[n];
                          for (int i = 0; i < n; i++)
                          {
                           Console.WriteLine("Lütfen dizinin {0}. elemanını girin : ", i + 1);
                           dizi1[i] = Convert.ToInt32(Console.ReadLine());
                          }
                          Console.WriteLine();
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde oluşmuştur.");
                          yazdir_number(dizi1, n);
                          Console.WriteLine();
                          Console.WriteLine("-----------------------------------------------------");
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde sıralanmıştır.");
                          selection_sort(dizi1, n);
                          yazdir_number(dizi1, n);
 
                          break;
 
 
                      case 2:
 
                          Console.WriteLine();
                          Console.WriteLine(" Buble Sort ile sayıları küçükten büyüğe sıralama bölümüne hoş geldiniz.");
                          Console.WriteLine();
                          Console.WriteLine("Dizimize kaç adet sayı girmek istiyorsunuz?");
                          int k=Convert.ToInt32(Console.ReadLine());
 
                          int[] dizii1 = new int[k];
                          for (int i = 0; i < k; i++)
                          {
                           Console.WriteLine("Lütfen dizinin {0}. elemanını girin : ", i + 1);
                           dizii1[i] = Convert.ToInt32(Console.ReadLine());
                          }
 
                          Console.WriteLine();
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde oluşmuştur.");
                          yazdir_number(dizii1, k);
                          Console.WriteLine();
                          Console.WriteLine("-----------------------------------------------------");
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde sıralanmıştır.");
                          buble_sort(dizii1);
                          yazdir_number(dizii1, k);
 
                          break;
 
                      case 3:
 
                          Console.WriteLine();
                          Console.WriteLine(" Buble Sort ile String ifadeleri Alfabetik olarak sıralama bölümüne hoş geldiniz.");
                          Console.WriteLine();
                          Console.WriteLine("Dizimize kaç adet string ifade girmek istiyorsunuz?");
                          int m = Convert.ToInt32(Console.ReadLine());
 
                          string [] dizii2 = new string[m];
                          for (int i = 0; i < m; i++)
                          {
                           Console.WriteLine("Lütfen dizinin {0}. string ifadesini girerek ENTER 'a basın : ", i + 1);
                           dizii2[i] = Convert.ToString(Console.ReadLine());
                          }
 
                          Console.WriteLine();
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde oluşmuştur.");
                          yazdir_string(dizii2,m);
                          Console.WriteLine();
                          Console.WriteLine("-----------------------------------------------------");
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde sıralanmıştır.");
                          buble_string(dizii2);
                          yazdir_string(dizii2,m);
 
                          break;
 
                      case 4:
 
                          Console.WriteLine();
                          Console.WriteLine(" Buble Sort ile String ifadeleri UZUNLUKLARINA göre sıralama bölümüne hoş geldiniz.");
                          Console.WriteLine();
                          Console.WriteLine("Dizimize kaç adet string ifade girmek istiyorsunuz?");
                          int x = Convert.ToInt32(Console.ReadLine());
 
                          string [] dizi2 = new string[x];
                          for (int i = 0; i < x; i++)
                          {
                           Console.WriteLine("Lütfen dizinin {0}. string ifadesini girerek ENTER 'a basın : ", i + 1);
                           dizi2[i] = Convert.ToString(Console.ReadLine());
                          }
 
                          Console.WriteLine();
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde oluşmuştur.");
                          yazdir_string(dizi2,x);
                          Console.WriteLine();
                          Console.WriteLine("-----------------------------------------------------");
                          Console.WriteLine("Girilen dizinin elemanları aşağıdaki şekilde sıralanmıştır.");
                          buble_string_uzunluk(dizi2);
                          yazdir_string(dizi2,x);
 
                          break;
 
                      case 5:
                          a=2;
                          break;
                  }
                if (a == 1)
                  {
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.WriteLine("Programı kullanarak tekrar sıralama yapmak ister misiniz? e/h");
                    cevap = Convert.ToChar(Console.ReadLine());
                  }
                else
                  {
                Console.WriteLine();
                  Console.WriteLine(" Semih DURAN tarafından yazılmıştır. Daha fazlası için www.semihduran.com");
                  Thread.Sleep(2000);
                  return;
                  }
                  } while (cevap == 'e' || cevap == 'E');
                  Console.WriteLine();
                  Console.WriteLine(" Semih DURAN tarafından yazılmıştır. Daha fazlası için www.semihduran.com");
                  Thread.Sleep(2000);
                   }
                  catch
                  {
                 Console.WriteLine("Geçersiz giriş yapıldı. Program 3 saniye sonra kapatılacak.");
                 Thread.Sleep(3000);
                }
              }
 
        }
    }

 

Semih DURAN

View Comments

Recent Posts

Türkiye Bankalar ve Ödeme Kuruluşları BIN Numaraları Listesi – 2025 Güncel

Merhaba Arkadaşlar, Sizinle Türkiye'de faaliyet gösteren bankalar ve ödeme kuruluşlarının kartlarının güncel BIN numaraları listesini…

9 ay ago

Asp.Net Array List Veri Gönderme

Bu yazımda size Asp.Net üzerinden bir api'ye nasıl dizi (Array List) veri gönderebileceğinizden bahsetmek istiyorum.…

4 yıl ago

Postman ile Array List Veri Gönderme

Merhaba Arkadaşlar, Bu yazımda size Postman üzerinden bir diziyi (Array List) nasıl post olarak göndereceğinizden…

4 yıl ago

Google Sheets Komut Dosyası Tetikleyiciler

Merhaba Arkadaşlar, Google Sheet üzerinden hazırladığınız bir uygulamanızı nasıl belirli saatlerde çalışmasını sağlayabileceğinizi paylaşmak istiyorum.…

5 yıl ago

Google Sheets Komut Dosyası Mysql Veritabanından Veri Çekme

Merhaba Arkadaşlar, Google Sheet hepimizin kullandığı bir uygulama. Sizlerle Sheet üzerinden nasıl Mysql veritabanına bağlanıp…

5 yıl ago

İnternet Sayfasına Whatsapp Link Ekleme

Merhaba Arkadaşlar, İnternet sayfalarında aşağıdaki şekilde kolayca Whatsapp mesaj linki ekleyebilirsiniz.

5 yıl ago