Quicksort algorithm where it asks the user to enter 10 integers and it calls quicksort function to sort the array and print all the integers in sorted order.

Code:
```#include<stdio.h>
#define N 10

void quicksort(int a[],int low , int high);
int split(int a[], int low, int high);

int main(void)
{
int a[N], i;

printf("enter 10 no.:");

for(i=0;i<N;i++)
{scanf("%d", &a[i]);}

quicksort(a, 0,N-1);

printf("In sorted order:");
for(i=0;i<N;i++)
printf("%d  ", a[i]);

printf("\n");
return 0;

}

void quicksort(int a[], int low, int high)
{
int middle;

if(low>=high)
return;

middle=split(a,low,high);

quicksort(a,low,middle-1);
quicksort(a,middle+1,high);
}

int split(int a[], int low, int high)
{
int part=a[low];
for( ; ;)
{

while(low < high && part<=a[high])
{
high--;
}
if(low>=high)
break;
else
a[low++]=a[high];

while(low<high && a[low] <= part)
{
low++;
}
if(low>=high)
break;
a[high--]=a[low];

}
a[high]=part;
return high;

}```
please explain the steps in details regarding how recursion takes place in quicksort function. i m confused..sorry

Code:
```void quicksort(int a[], int low, int high)
{
int middle;

if(low>=high)
return;

middle=split(a,low,high);

quicksort(a,low,middle-1);
quicksort(a,middle+1,high);
}```

thank you.

2. You can change the code to add print statements and run the code again.
Code:
```void quicksort(int a[], int low, int high)
{
printf("DEBUG: Start sort between %d .. %d\n", low, high);
int middle;

if(low>=high)
return;

middle=split(a,low,high);

quicksort(a,low,middle-1);
quicksort(a,middle+1,high);
printf("DEBUG: End sort between %d .. %d\n", low, high);
}```
> printf("enter 10 no.:");