quick sort

c program :


#include <stdio.h>
int partition(int arr[], int lb, int ub);
void swap(int *a, int *b);
void quicksort(int arr[], int lb, int ub);
int main()
{
    int array[100], position, c, n;

    printf("Enter number of elements in array\n");
    scanf("%d", &n);

    printf("Enter %d elements\n", n);

    for (c = 0; c < n; c++)
    {
        scanf("%d", &array[c]);
    }
    printf("\nBefore Sorting:");

    for (c = 0; c < n; c++)
    {
        printf("%5d", array[c]);
    }
    quicksort(array, 0, n - 1);
    printf("\nAfter Sorting:");

    for (c = 0; c < n; c++)
    {
        printf("%5d", array[c]);
    }
    return 0;
}

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

void quicksort(int arr[], int lb, int ub)
{

    int key;
    if (lb < ub)
    {
        key = partition(arr, lb, ub);
        quicksort(arr, lb, key - 1);
        quicksort(arr, key + 1, ub);
    }
}

int partition(int arr[], int lb, int ub)
{
    int start, end, pivot;
    start = lb;
    end = ub;
    pivot = arr[lb];
    while (start < end)
    {
        while (arr[start] <= pivot)
        {
            start++;
        }
        while (arr[end] > pivot)
        {
            end--;
        }
        if (start < end)
        {
            swap(&arr[start], &arr[end]);
        }
    }
    swap(&arr[lb], &arr[end]);
    return end;
}

Comments