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.