Sorry about that, here's the code:
Code:
#include <stdio.h>
void quicksort(int *a, int start, int end);
int partition(int *a, int start, int end);
void print_array(int *a, int len);
void swap(int *a, int *b);
int main()
{
int a[9] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
print_array(a, 9);
printf("\n");
quicksort(a, 0, 8);
print_array(a, 9);
return 0;
}
void quicksort(int *a, int start, int end)
{
if (start < end)
{
int p = partition(a, start, end);
quicksort(a, start, p - 1);
quicksort(a, p + 1, end);
}
}
int partition(int *a, int start, int end)
{
int x = a[end];
int pInd = start - 1;
int i;
for (i = 0; i < end; i++)
{
if (a[i] <= x)
{
++pInd;
swap(&a[i], &a[pInd]);
}
}
swap(&a[pInd + 1], &a[end]);
return (pInd + 1);
}
void print_array(int *a, int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
}
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}