Bolu Beyi tarafından yazıldı Haziran - 7 - 2011 0 Yorum
Küçükten büyüğe Quick sort ile sıralama

Bir çok sıralama programlarını Bolubeyi.Net’te paylaşmıştım. Sanırım Quick sort sıralama programını gözden kaçırmışım.Bugün de bu konuya deyinelim, fazla bir açıklamasını yapmayacağım. Zaten eklediğim resimde gayet rahat anlayacaksınız hangi mantıkla çalıştığını. Daha önceki sıralama örneklerinde de olduğu gibi 3 adet 10-100-1000 elemanlı dizi tanımlayacağız ve rastgele 10 adet sayı üreteceğiz. Ve yine eklediğimiz sayaçla programın kaç kez çalıştığını göreceğiz. Buyrun kodlar:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication4
{
class Program
{
static int sayac = 0,baslangic=0;
static int[] sayi1 = new int[10];
static int[] sayi2 = new int[100];
static int[] sayi3 = new int[1000];
static void Main(string[] args)
{
rastgele();
QuickSort(baslangic, sayi1, sayi1.Length-1);
partition(baslangic,sayi1,sayi1.Length – 1);
Console.WriteLine(“–Sıralanmış Hali–n”);

for (int i = 0; i < sayi1.Length; i++)
Console.WriteLine(“{0}”, sayi1[i]);
Console.WriteLine(“0-10 arası Sıralama sayacı:{0}”, sayac);
sayac = 0;
partition(baslangic, sayi2, sayi2.Length – 1);
Console.WriteLine(“0-100 arası Sıralama sayacı:{0}”, sayac);
sayac = 0;
partition(baslangic, sayi3, sayi3.Length – 1);
Console.WriteLine(“0-1000 arası Sıralama sayacı:{0}”, sayac);
sayac = 0;
}
static void rastgele()
{
Random rasgele = new Random();
for (int i = 0; i < sayi1.Length; i++)
{
sayi1[i] = rasgele.Next(0, 10001);
Console.WriteLine(“Secilen {0}. sayi1 = {1}”, (i + 1), sayi1[i]);
}
for (int i = 0; i < sayi2.Length; i++)
{
sayi2[i] = rasgele.Next(0, 10001);
}
for (int i = 0; i < sayi3.Length; i++)
{
sayi3[i] = rasgele.Next(0, 10001);
}

}
public static void QuickSort(int baslangic, int[] dizi, int bitis)
{
int i;
sayac++;
if (baslangic < bitis)
{
sayac++;
i = partition(baslangic, dizi, bitis);
sayac++;
QuickSort(baslangic, dizi, i – 1);
sayac++;
QuickSort(i + 1, dizi, bitis);
sayac++;
}
sayac++;
}
public static int partition(int baslangic, int[] A, int bitis)
{

int temp;
int x = A[bitis];
int i = baslangic – 1;
sayac++;
for (int j = baslangic; j             {
sayac++;
if (A[j]                 {
sayac++;
i++;
sayac++;
temp = A[i];
sayac++;
A[i] = A[j];
sayac++;
A[j] = temp;
sayac++;
}
}
temp = A[i + 1];
sayac++;
A[i + 1] = A[bitis];
sayac++;
A[bitis] = temp;
sayac++;
return i + 1;
}
}
}
Yan tarafta gördüğünüz resimde 9 adet sayı var. Program bize ortanca sayıyı buluyor ve dizinin ortasına yerleştiriyor. Diğer elemanları da ortadaki sayıya göre küçük olanlar sola, büyük olanlar sağa olacak şekilde yerleştiriyor. Sonra sağ ve sol gruplar için aynı işlemleri yaparak sıralamış oluyor. Quick sort sıralama programı bu şekilde. Tekrar görüşmek üzere…


Time limit is exhausted. Please reload CAPTCHA.