#include <stdio.h>
void interchange(int a[], int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
int partition(int a[], int m, int p) {
int v = a[m];
int i = m;
int j = p;
do {
while (a[i] <= v && i < j) {
i++;
}
while (a[j] > v && j > i) {
j--;
}
if (i < j) {
interchange(a, i, j);
}
} while (i < j);
a[m] = a[j];
a[j] = v;
return j;
}
void quick_sort(int a[], int p, int q) {
if (p < q) {
int j = partition(a, p, q);
quick_sort(a, p, j - 1);
quick_sort(a, j + 1, q);
}
}
int main() {
int a[] = {3, 6, 8, 10, 1, 2, 1};
int n = sizeof(a) / sizeof(a[0]);
quick_sort(a, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
Comments