Google News
logo
C Program to Quicksort
Quicksort is a widely used sorting algorithm that follows the Divide and Conquer approach.

It works by selecting a "pivot" element from the array and partitioning the other elements into two sub-arrays, according to whether they are less than or greater than the pivot. The sub-arrays are then recursively sorted.

Here's an example of quicksort implemented in C :
Program :
#include <stdio.h>

void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}

int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int i = (low - 1);
    for (int j = low; j <= high - 1; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return (i + 1);
}

void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}

int main() {
    int arr[] = {31, 26, 18, 47, 29};
    int n = sizeof(arr)/sizeof(arr[0]);
    int i;

    printf("Unsorted array: ");
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);

    quickSort(arr, 0, n-1);

    printf("\nSorted array: ");
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
    return 0;
}
Output :
Unsorted array: 31 26 18 47 29 
Sorted array: 18 26 29 31 47 
* The quickSort function takes an array, the low and high indices of the sub-array as parameters, and recursively partitions the sub-array into two halves, using the partition function.

* The partition function takes the array, the low and high indices of the sub-array as parameters, and partitions the sub-array based on a pivot element.

* The swap function is used to swap two elements in the array. The main function initializes an array, calls quickSort to sort it, and prints the unsorted and sorted array.