Quick Sort (Hızlı Sıralama) Algoritması
Selamün Aleyküm Arkadaşlar;
Hızlı sıralama algoritması adından da anlaşıldığı üzere hızlı sıralama algoritmalarından birisidir. Çalışma mantığı; herhangi bir sayı seçilir. Buna Pivot denir. Ortadaki, sondaki, baştaki veya rastgele bir sayı da olabilir. Küçük olan sayılar; seçilen sayının soluna, büyük olan sayılar sağına yazılır. Küçük olan ve büyük olan sayılarda aynı şekilde sıralanır. Bir örnekle açıklayalım.
Şöyle bir dizimiz olsun.
Sondaki elemanı pivot olarak seçelim ve küçük olanları sola, büyük olanları sağa yazalım.
Sonra sağ ve sol kısımda aynı şekilde sıralanır. Tek eleman kalana kadar bu işlem devam eder. İşlemin sonunda dizi sıralanmış olur.
C#
void main(){
int[] d = Quick_Sort(new int[]{76, 6, 4, 19, 50}, 0, 5);
//Konsola yaz
for (int i = 0; i < d.Length; i++){
Console.Write(d[i] + " ");
}
Console.ReadKey();
}
//@parametreler dizi, index(0), diziuzunluk
int[] Quick_Sort(int[] dizi, int sol, int sag) {
//Pivot olarak son elemanı seç
int p = dizi[sag - 1], i = sol, j = sag - 2, temp = 0;
if (sag - sol > 2){
while (i < j){
//Sol kısımdaki eleman pivot elemandan büyükse seç
while (dizi[i] < p) { i++; }
//Sağ kısımdaki eleman pivot elemandan küçükse seç
while (j > 0 && dizi[j] > p) { j--; }
if (i < j){
temp = dizi[i];
dizi[i++] = dizi[j];
dizi[j--] = temp;
}
}
}
//Pivot elemanı karşılaştır ve yer değiştir
if (p < dizi[i]){
temp = dizi[i];
dizi[i] = dizi[sag - 1];
dizi[sag - 1] = temp;
}
//Solda eleman varsa
if(i - sol > 1)
dizi = Quick_Sort(dizi, sol, i);
//Sağda eleman varsa
if(sag - (i+1) > 1)
dizi = Quick_Sort(dizi, i + 1, sag);
return dizi;
}
Proje dosyasını buradan indirebilirsiniz.
PHP
$b = QuickSort(array(3, 2, 9, 12, 42, 50, 15), 0, 7);
//Ekrana yaz
for ($i=0; $i < count($b); $i++) {
echo $b[$i] . ' ';
}
//@parametreler dizi, index(0), diziuzunluk
function QuickSort($dizi, $sol, $sag){
//Pivot olarak son elemanı seç
$p = $dizi[$sag - 1];
$i = $sol;
$j = $sag - 2;
if ($sag - $sol > 2){
while ($i < $j){
//Sol kısımdaki eleman pivot elemandan büyükse seç
while ($dizi[$i] < $p) { $i++; }
//Sağ kısımdaki eleman pivot elemandan küçükse seç
while ($j > 0 && $dizi[$j] > $p) { $j--; }
if ($i < $j){
$temp = $dizi[$i];
$dizi[$i++] = $dizi[$j];
$dizi[$j--] = $temp;
}
}
}
//Pivot elemanı karşılaştır ve yer değiştir
if ($p < $dizi[$i]){
$temp = $dizi[$i];
$dizi[$i] = $dizi[$sag - 1];
$dizi[$sag - 1] = $temp;
}
//Solda eleman varsa
if($i - $sol > 1)
$dizi = QuickSort($dizi, $sol, $i);
//Sağda eleman varsa
if($sag - ($i+1) > 1)
$dizi = QuickSort($dizi, $i + 1, $sag);
return $dizi;
}
Hayırlı günler, sağlıcakla kalın.
Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.







































