Kabarcık Tekniği ile Dizi Sıralama
Kabarcık Tekniği ile Dizi Sıralama (Buble Sort)
Dizi sıralamak için birçok algoritma bulunmaktadır, bunlardan en kolay anlaşılanı Buble Sort yani Kabarcık sıralamadır. En hızlı sıralama algoritması QuickSort algoritmasıdır. Bu algoritmaya daha sonra fırsat bulduğumuzda değineceğiz.

Örneğin aşağıdaki sayılardan oluşan bir dizimiz olsun.
dizi = {10, 5, 11, 3, 25, 6}
Aşağıdaki tabloya dikkat ettiğinizde adım adım en küçük sayının sağa doğru alındığını görürsünüz. Soldan başlayıp ikili karşılaştırmalar yaparak küçük eleman rastladığımızda yer değiştiriyoruz.
İki değişkeni yer değiştirme işlemini bir programlama dilinde nasıl yaparsınız. Örneğin a ile b değerini yer değiştireceğiz: a=5, b=6 olsun. Sonuçta a=6 ve b=5 olmasını isteyelim. O zaman geçici bir değişkene aktarıp yer değiştiriyoruz.
gecici = b;
b= a;
a= gecici;
Bu durumda ilk önce gecici= b ile gecici = 6 oluyor, b= a ile b= 5 oluyor, sonra a= gecici ile a değeri 6 oluyor. Sonuçta; istediğimiz şekilde b=5 ve a=6 yapmış oluyoruz.
Programın tamamı aşağıdaki gibidir, iki döngü kullanarak sıralama işlemini küçükten büyüğe doğru sıraladık.
Aşağıdaki ekran çıktısını görmektesiniz.

Diziyi küçükten büyüğe sıralamak için if (dizi[i] > dizi[j]) ifadesini tersine çevirmelisiniz.
Dizi sıralamak için birçok algoritma bulunmaktadır, bunlardan en kolay anlaşılanı Buble Sort yani Kabarcık sıralamadır. En hızlı sıralama algoritması QuickSort algoritmasıdır. Bu algoritmaya daha sonra fırsat bulduğumuzda değineceğiz.

Örneğin aşağıdaki sayılardan oluşan bir dizimiz olsun.
dizi = {10, 5, 11, 3, 25, 6}
Aşağıdaki tabloya dikkat ettiğinizde adım adım en küçük sayının sağa doğru alındığını görürsünüz. Soldan başlayıp ikili karşılaştırmalar yaparak küçük eleman rastladığımızda yer değiştiriyoruz.
İlk önce en soldan 10'dan başlıyoruz, 10 ile 5'i karşılaştırıyoruz, "her zaman sağda küçük olması gerek" prensibine göre 10 ile 5'de yer değiştirme yapmıyoruz. Ama sıra en küçük olan 5'e geçiyor. Sonra 5 ile 11'i karşılaştrıyoruz. küçük olan sağda olması gerektiğinden, 11 ile 5'i yer değiştiriyoruz. sonra 5 ile 3 ü karşılaştırıyoruz. Küçük olan 3 sağda olduğundan yer değiştirmiyoruz ama yola küçük olan 3 ile devam ediyoruz. Sonra, 3 ile 25 i karşılaştırıyor ve yer değiştiriyoruz. Sonra 3 ile 6'yı karşılaştırıyoruz ve yer değiştiriyoruz. Artık bütün elemanlar karşılaştırıldı ve en küçük olan 3 bulundu.
Şimdi 3'ü yerinde bırakıp kalan kısım 10, 11, 5, 25, 6 kısmını aynı mantıkla karşılaştırıyoruz ve 5 en sağa geçiyor. Bu adımlar bittikten sonra artık dizimiz sıralanmış oluyor.
Şimdi 3'ü yerinde bırakıp kalan kısım 10, 11, 5, 25, 6 kısmını aynı mantıkla karşılaştırıyoruz ve 5 en sağa geçiyor. Bu adımlar bittikten sonra artık dizimiz sıralanmış oluyor.
10 | 5 | 11 | 3 | 25 | 6 |
10 | 5 | 11 | 3 | 25 | 6 |
10 | 11 | 5 | 3 | 25 | 6 |
10 | 11 | 5 | 3 | 25 | 6 |
10 | 11 | 5 | 25 | 3 | 6 |
10 | 11 | 5 | 25 | 6 | 3 |
10 | 11 | 5 | 25 | 6 | |
11 | 10 | 5 | 25 | 6 | |
11 | 10 | 5 | 25 | 6 | |
11 | 10 | 25 | 5 | 6 | |
11 | 10 | 25 | 6 | 5 | |
11 | 10 | 25 | 6 | ||
11 | 10 | 25 | 6 | ||
11 | 25 | 10 | 6 | ||
11 | 25 | 10 | 6 | ||
11 | 25 | 10 | |||
25 | 11 | 10 | |||
25 | 11 | 10 | |||
25 | 11 | ||||
25 | 11 |
İki değişkeni yer değiştirme işlemini bir programlama dilinde nasıl yaparsınız. Örneğin a ile b değerini yer değiştireceğiz: a=5, b=6 olsun. Sonuçta a=6 ve b=5 olmasını isteyelim. O zaman geçici bir değişkene aktarıp yer değiştiriyoruz.
gecici = b;
b= a;
a= gecici;
Bu durumda ilk önce gecici= b ile gecici = 6 oluyor, b= a ile b= 5 oluyor, sonra a= gecici ile a değeri 6 oluyor. Sonuçta; istediğimiz şekilde b=5 ve a=6 yapmış oluyoruz.
Programın tamamı aşağıdaki gibidir, iki döngü kullanarak sıralama işlemini küçükten büyüğe doğru sıraladık.
using System;
namespace DiziSiralama
{
class Program
{
static void Main(string[] args)
{
int[] dizi = { 10, 5, 11, 3, 25, 6 };
int[] siralidizi = new int[dizi.Length];
int g;
//Sıralamadan önce...
foreach (int eleman in dizi)
{
Console.Write(eleman + " ");
}
Console.WriteLine("\n");
//Sıralanıyor...
for (int i=0; i<dizi.Length; i++)
{
for (int j = 0; j < dizi.Length; j++)
{
if (dizi[i] > dizi[j])
{
g = dizi[j];
dizi[j] = dizi[i];
dizi[i] = g;
}
}
}
//Sıralandıktan sonra...
foreach(int eleman in dizi)
{
Console.Write(eleman + " ");
}
}
}
}
Aşağıdaki ekran çıktısını görmektesiniz.

Diziyi küçükten büyüğe sıralamak için if (dizi[i] > dizi[j]) ifadesini tersine çevirmelisiniz.
Mutlu Kodlamalar,
Oğuzhan TAŞ
Nisan, 2015

Dil Değiştir(Change Language)
Kategoriler
- Csharp(58)
- Csharp Formlar(23)
- Web Tasarım(9)
- CSS(27)
- JavaScript(37)
- PHP(50)
- Laravel(3)
- ASP.net(38)
- Excel(15)
- Güvenlik(4)
- E-Ticaret(3)
- Kariyer(5)
- SQL Server(29)
- MySQL(16)
- Linux(17)
- MacOSX(8)
- Ayarlar(12)
- Bilgisayar Ağları(3)
- Symfony(1)
- Teknoloji(7)
- VBS(1)
- Arduino(6)
- RaspberryPi(1)
- Algoritmalar(15)
- HTML(3)
- Python(2)
- Bash Script(7)
- C Programlama(10)
- Flutter - Dart(11)
- Bootstrap(1)
En çok Okunan 18 Makale
- :: Excelde EĞER Fonksiyonu Kullanımı...
- :: Csharp ile Access Veritabanı Bağlan...
- :: SQL nedir, Temel SQL Komutları nele...
- :: Hangi Linux Dağıtımı?
- :: OSX İşletim Sistemine PHP, MySQL, A...
- :: Excel Hesap tablosunda EĞERSAY Fonk...
- :: PHP dilini kullanarak MySQLi tekniğ...
- :: Excel Hesap tablosunda ÇOKETOPLA Fo...
- :: Excel Hesap tablosunda ETOPLA Fonks...
- :: Excel Hesap tablosunda ÇOKEĞERSAY F...
- :: Hangi Programlama Dilini Öğrenmeliy...
- :: Mac Bilgisayarınıza Windows 7 Yükle...
- :: PHP ile Basit Dosya Yükleme
- :: Excel hücrelerinde yıldız koyarak b...
- :: C# Programlama Dili ile İlgili Örne...
- :: PHP Dili kullanarak MySQLi Tekniği ...
- :: PhpMyAdmin Şifresi Nasıl Değiştiril...
- :: Hangisi acaba, PHP mi ASP.NET mi ?