- Yasaklandı
- #1
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ı:
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);
}
}
}
}