Quick Sort
#include <stdio.h>
void swap(int*, int*);
int partition(int[], int, int);
void quicksort(int[], int, int);
void swap(int *p, int *q) {
int temp = *p;
*p = *q;
*q = temp;
}
int partition(int a[], int l, int h) {
int pivot = a[l];
int i = l - 1;
int j = h + 1;
while (1) {
do {
i++;
} while (a[i] < pivot);
do {
j--;
} while (a[j] > pivot);
if (i >= j)
return j;
swap(&a[i], &a[j]);
}
}
void quicksort(int a[], int l, int h) {
if (l < h) {
int s = partition(a, l, h);
quicksort(a, l, s);
quicksort(a, s + 1, h);
}
}
int main() {
int a[20], n;
printf("Enter the no. of elements in the array: ");
scanf("%d", &n);
printf("Enter %d elements: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
quicksort(a, 0, n - 1);
printf("Sorted array is:\n");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
Comments
Post a Comment