Quicksort (Hızlı sıralama)

Algoritmalar konusunda ilk yazımı bugünden başlıyorum.Üniversite 2. sınıfta tanıştığım sıralama algoritmalarından ilki hızlı sıralama…

quick_sort_animation

İngilizce Adı Quick Sort

Ortalama O(n log n)

En kötü O(n²)

Bellek O(log n)

Kararlı mı? Hayır

Yöntem Karşılaştırma ile Bölümlendirme Şimdi Hızlı sıralama nedir. Öncelikle size gerçekten zevkli bir video ile sunmak istiyorum. Burada Hareketli bir şekilde izleyebilirsiniz :)

untitled

Şimdi burada ki resme bakın. Bir pivot sayımız olmalı ilk başta burada 5 bizim pivot sayımız ve bu sayıyı yerine yerleştiriyoruz.Pivot elemanımızın solunda hep küçük sağında hep büyük sayılar olup onlar karşılaştırılacak.5 tam ortaya yerleştikten ne kaldı sola 1 2 3 4 sayıları sağda ise 6 7 8 9 tabikide bu sayılar sıralımı değil. Amacımız pivot elemanı bulduktan sonra direk sol ve sağ tarafı sıralamak.Yukarda sıralama şeklini görüceksinizdir . Bu kadar aşağıda ise animasyon olarak gösterimi vardır.

quicksort-example

 

Bu da kodumuz :)

//package hızlıSıralama;

import java.util.Arrays;

public class HızlıSıralama {
int[] arr = { 2, 17, -4, 42, 9, 26, 11, 3, 5, 28 };

void quickSort(int[] a, int altindis, int üstindis) {
// altindis o adımda sıralanan altdizinin ek küçük indisidir
// üstindis o adımda sıralanan altdizinin ek büyük indisidir

int i = altindis, j = üstindis, h;
// x terimi, mukayesenin yapılacağı mihenk’dir (pivot)
int x = a[(altindis + üstindis) / 2];
// Takas eylemiyle diziyi ayrıştırma
do {
while (a[i] < x)
i++;
while (a[j] > x)
j–;
if (i <= j) {
h = a[i];
a[i] = a[j];
a[j] = h;
i++;
j–;
}
} while (i <= j);
// yinelge (recursion)
if (altindis < j)
quickSort(a, altindis, j);
if (i < üstindis)
quickSort(a, i, üstindis);
}

public static void main(String[] args) {
HızlıSıralama qs = new HızlıSıralama();
System.out.println(“Sıralamadan önce: “);
System.out.println(Arrays.toString(qs.arr));
qs.quickSort(qs.arr, 0, 9);
System.out.println(“Sıralamadan sonra:”);
System.out.println(Arrays.toString(qs.arr));
}
}

Post Author: umiitkose

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">