En hızlı sıralama algoritması [Quick Sort]

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Banlı Üye
Katılım
7 Nis 2020
Mesajlar
116
Çözümler
3
Tepki puanı
18
Yaş
30
6 HİZMET YILI
Bubble, Heap, Insertion, Merge, Quick, Selection ve Shell Sıralama algoritmaları arasında açık ara farkla en hızlı olan Quick sort algoritması olduğu için size bu algoritmayı ve algoritmanın nerelerde nasıl kullanıldığı hakkında bir kaç ufak bilgi vermek isterim.

Bu sıralama algoritması 1960 yılında benim çokça saygı duyduğum bir insan olan Tony Hoare abimiz tarafından yazılıyor.

Mantığı çok basit; diziden rastgele bir sayı yada eleman seçip, bir sağını ve bir solunu karşılaştırıyor ve buna yerlerini göre değiştiriyor.

Bubble Sort bundan daha uzun olan bir yöntem olan sonraki sayıyla karşılaştırıyor ve bunu dizinin uzunluğuna N dersek N^2 defa tekrar ediyor yani 200 büyüklüğündeki bir dizi için maksimum 400 kere for döngüsüne girmesi gerekiyor.

Genelde verileri çok sayıda olan herhangi bir yer tarafından kullanılabilir ama Türkiye'de sıralama algoritmalarından haberi olmayan akademisyenler tanımış biri olarak sadece bubble sort öğretilip geçildiğine şahit oldum o yüzden bu konuyu okuyor olmak bilgisayar bilimi ile ilgilenenleri bir adım öteye taşıyabilir diye düşünüyorum en azından BigData yönetimi yapacak arkadaşlar için.

Şuan bu algoritmayı kullanan benim de hali hazırda çalıştığım firma olan Koton önceden Bubble Sort ile işlemler yaparak ürünleri sıralıyordu yaklaşık 10.000 ürünü olan bir firma için epey yorucu görünüyor. Hem ağda gecikmelere sebep oluyordu hem de sunucuyu yoruyordu. Bu değişimden sonra 1 dakika civarlarında yapılan sıralama işlemi 8-10 saniyelere düştü. O yüzden belki ileride işinize yarar yada sadece genel kültür olarak kalabilir :)

Merak eden olursa Quick Sort algoritmasının zaman formülü
(N log N)
olarak hesaplanabilir

İlgili class dosyası:
C#:
namespace SortingAlgorithm.Sorters
{
    public class Quick
        :ISorter
    {
        #region ISorter Members
 
        public string Description
        {
            get { return "Quick Sort Sıralama Algoritması"; }
        }
 
        public void Execute(int[] Array)
        {
            Sort(0, Array.Length - 1,Array);
        }
 
        #endregion
 
        private void Sort(int LeftValue, int RightValue,int[] Array)
        {
            int PivotValue, LeftHoldValue, RightHoldValue;
 
            LeftHoldValue = LeftValue;
            RightHoldValue = RightValue;
            PivotValue = Array[LeftValue];
 
            while (LeftValue < RightValue)
            {
                while ((Array[RightValue] >= PivotValue) && (LeftValue < RightValue))
                {
                    RightValue--;
                }
 
                if (LeftValue != RightValue)
                {
                    Array[LeftValue] = Array[RightValue];
                    LeftValue++;
                }
 
                while ((Array[LeftValue] <= PivotValue) && (LeftValue < RightValue))
                {
                    LeftValue++;
                }
 
                if (LeftValue != RightValue)
                {
                    Array[RightValue] = Array[LeftValue];
                    RightValue--;
                }
            }
 
            Array[LeftValue] = PivotValue;
            PivotValue = LeftValue;
            LeftValue = LeftHoldValue;
            RightValue = RightHoldValue;
 
            if (LeftValue < PivotValue)
            {
                Sort(LeftValue, PivotValue - 1,Array);
            }
 
            if (RightValue > PivotValue)
            {
                Sort(PivotValue + 1, RightValue,Array);
            }
        }
    }
}
 
☆☆Her oyun bir gün hileyi tadacaktır☆☆
Griffin Premium
Katılım
12 Kas 2017
Mesajlar
13,726
Çözümler
240
Tepki puanı
5,132
Ödüller
23
8 HİZMET YILI
Dizilim icin kullanılabilir mi
Mesela lisye yapmak icin
 
Uzman Üye
Katılım
13 Ocak 2017
Mesajlar
232
Tepki puanı
15
Ödüller
7
Yaş
24
9 HİZMET YILI
Bilgi İçin Sağol Reis İyi Anlatmışsın
 
Seçkin Üye
Katılım
10 Eyl 2017
Mesajlar
348
Tepki puanı
23
Yaş
27
8 HİZMET YILI
sempatik ve anlaşılır yazı eline sağlık dostum
 
Seçkin Üye
Katılım
6 Eki 2018
Mesajlar
306
Çözümler
1
Tepki puanı
76
Ödüller
7
7 HİZMET YILI
liste yapmak için kullanabilir miyim bunu ?
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst