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

Popular posts from this blog

AVL Trees

BFS Matrix

BFS List