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);
                }
              }
 
        }
    }

 

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. EMRAH dedi ki:

    bunları hangi programlama diline yazacagım

    vıze fınal notlaını hesaplayan programa nasıl uygularım

Bir cevap yazın

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