//Quick sort alghoritması ortalama zamanda n(log n)//de çalışan büyük arrayler için çok iyi sonuçlar//veren bir sıralama algoritmasıdır.publicstaticvoid quicksort(int array[],int left,int right){//Başta verilen left ve right değerlerini geçici olarak //tutabilmek için l ve r'ye atıyoruz. Aynı zamanda array'//in içinde yer değiştirmeler içinde temp adlı değişkeni//kullanıyoruz.int l = left,r=right,temp;//pivot olarak baştaki elemanı seçiyoruzint pivot = array[left];//partition algorithm//Bu bölümde arrayimizi 2 ye ayırıyoruz//Birinci bölümde pivottan küçük olanları,//ikinci bölümde ise pivottan büyük elemanları//tutuyoruz. while(r>=l){//l değişkenini pivottan daha büyük bir eleman//karşımıza çıkana kadar artırıyoruz.while(pivot>array[l])
l++;//r değişkenini pivottan daha küçük bir eleman//karşımıza çıkana kadar azaltıyoruz.while(pivot<array[r])
r--;//Eğer sol tarafta pivottan daha büyük ve sağ//tarafta pivottan daha küçük bir elemanla//karşılaşırsak bunları temp değişkeni //yardımıyla yer değiştiriyoruz.if(r>=l){
temp = array[r];
array[r]= array[l];
array[l]= temp;//arrayin bir sonraki elamanına //ulaşabilmek için sol tarafta l'yi //artırırken r'yi de azaltıyoruz.
l++;r--;}//En dıştaki loop sayesinde birinci grupta hep//pivottan küçükleri ikinci grupta da pivottan//hep büyükleri toplamış oluyoruz.}//Eğer l right kadar büyük olmuşsa veya right'tan //küçükse bu büyük grupta sıralanabilecek sayılar//olabileceğini gösterir. Dolayısıyla 2. grup için//quick sort tekrar çağrılır. 1. grup için se l değiş//keninin solunda kalan kısım kullanılır. Onun için de//aynı şekilde quick sort çağrılır.if(right>=l){
quicksort(array,l,right);
quicksort(array,left,l-1);}}
Henüz yorum yok.