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