1~

Minter Coder's Blog

Veri Yapıları & Algoritmalar Sorting Algorithms 4 - Hızlı Sıralama (Quick Sort)

2022-05-26

Böl ve Yönet prensibine dayanır; sıralanması istenen dizi belirli bir sınıf (pivot) değerine göre iki alt diziye ayrılır. En iyi durum O(n*logn), en kötü durum O(n^2)

 

#include<stdio.h>
#include<stdlib.h>

void hsirala(int dizi[],int sol,int sag){
    register int k,j;
    int ortadaki,gecici;
    k=sol;
    j=sag;ortadaki=dizi[(sol+sag)/2]; // sınır deger
    do {
        while(dizi[k]<ortadaki && k<sag)
            k++;
        while(ortadaki < dizi[j] && j>sol)
            j--;
        if(k<=j){
            gecici = dizi[k];
            dizi[k]=dizi[j];
            dizi[j]=gecici;
            k++;
            j--;
        }
    }while(k<=j); // parçalama bitti
    if(sol<j) hsirala(dizi,sol,j);
    if(k<sag) hsirala(dizi,k,sag);

}
int main(){
    int arr[] = {9,10,1,8,5,99,7,4};
    int uzunluk = sizeof(arr)/sizeof(arr[0]);
    hsirala(arr,0,uzunluk-1);
    for(int i = 0;i<uzunluk;i++){
        printf("%d\t",arr[i]);
    }
    return 0;
}