I have a problem making my quicksort function recursive. If you look at the bolded lines, you will see that the function is taking three args instead of one. I have tried all i know but I still can't figure out a way to make it work.
typedef struct _qs_data
{
long *arr; /* array of long integers */
long left; /* left-most idx used in cur. invocation */
long right; /*right-most idx used in cur. invocation */
long depth; /* depth of recursion */
} qs_data;
/* Quicksort function. */
void quicksort ( struct _qs_data *data )
{
/*struct _qs_data *val1;
struct _qs_data *val2;*/
long pivot;
long leftIndex = data->left;
long rightIndex = data->right;
pivot = data->arr[data->left];
while ( data->left < data->right)
{
while((data->arr[data->right] >= pivot) && (data->left < data->right))
data->right--;
if (data->left != data->right)
{
data->arr[data->left] = data->arr[data->right];
data->left++;
}
while ((data->arr[data->left] <= pivot) && (data->left < data->right))
data->left++;
if (data->left != data->right)
{
data->arr[data->left] = data->arr[data->right];
data->right--;
}
}
data->arr [data->left] = pivot;
pivot = data->left;
data->left = leftIndex;
data->right = rightIndex;
if(data->left < pivot)
quicksort(data->arr, data->left, pivot-1);//problem with the number of args
if(data->right > pivot)
quicksort(data->arr, pivot+1, data->right);//same prob here
}