Quick Sort (Hızlı Sıralama) Algoritması
Karışık bir diziyi ortalama O(n.logn) çalışma süresinde sıralayan bu algoritma, 1960 yılında küçük bir İngiliz şirketi olan Elliot Brothers'ta çalışan C. A. R. Hoare tarafından geliştirilmiştir. Basitleştirilmiş kodu aşağıya ekledim.
NOT: Örneğin, kodun daha hızlı çalışması için
left - right < 32
olduğunda, daha kısa sürede sıralayan başka bir algoritmadan yararlanılabilir.
void quickSort(int arr[], int left, int right)
{
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}