Hızlı sıralama (quicksort) algoritması İngiliz bilgisayar bilimcisi Sir Charles Antony Richard Hoare tarafından bilinene göre 1962 tarihinde yazıldı. n adet sayıyı ortalama bir durumda Θ(nlogn) karmaşıklığıyla, karışık bir durumda ise Θ(n2) karmaşıklığıyla sıralar.

Quicksort algoritmasını diğer sıralama algoritmalarıyla karşılaştırabiliriz. Algoritmanın temel olarak çalışma mantığı şu şekildedir;
- Diziden herhangi bir elemanı referans (pivot) olarak seç.
- Referans sayının solundaki sayılardan referans sayıya göre büyük olanları referans sayının sağına, sağındaki sayılardan küçük olanları ise soluna gelecek şekilde elemanları konumlandır. Bu şekilde diziyi bölümlendirmiş olduk
- Referans sayının solunda ve sağında kalan her iki parça dizi için de işlemi özyineli (recursive) olarak tekrar et.
- Parçalanan dizilerde eleman sayısı sıfır olana kadar işlemi devam ettir.

Eğitim videosunu izlemek için tıkayınız.
Etkileşimli olarak işlemleri aşağıdaki sayfalardan takip edebilirsiniz;

32 programlama dilinde yazılmış hızlı sıralama algoritmaları
Javascript IDE ile incelemek için
C++ için internetten bulup visual studio 2008 ile düzenlediğim kodu ve örnek uygulamayı inceleyebilirsiniz;
#include "iostream"
using namespace std;
int q_sort(int a[], int l,int r); //Function tanımlaması
int q_sort(int a[], int l,int r) //function prototipi
{
int i,j;
i=l;// l değişkeni , 'a'dizisinin sol tarafını indisliyor,
j=r;// r değişkeni ise dizinin sağ tarafını indisliyor.
int ref,temp;
ref=a[(l+r)/2];//Referans değeri buluyoruz.
do {
while(a[i]
while(refl) j--;
if(i<=j)
{temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;}
} while (i<=j);
if (l
if (i
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n,i,l,r,x;
int a[150];
char ans;
do{
cout<<"Kac adet sayi siralamak istiyorsunuz?";
cin>>n;
cout<
cout<<"Siralamak istediginiz sayilari giriniz:"<
for (i=0;i
{
cin>>x;
a[i]=x;
}
cout<<"Siralanmis liste:"<
r=n-1;
l=0;
q_sort(a,l,r);
for (i=0;i<<
cout<<"Baska bir siralama yapmak ister misiniz?(Y/N)";
cin>>ans;
}while (ans=='y');
return 0;
}




Data Structres and Algorithms dersinin ödevini aldığımızda öğrendiğim konulardan biri. Ben de araştırmıştım, şaşırtıcı baya
[Tercüme etmek]
Beğendim - Beğenmedim:
0
0