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;
}