Quick sorting is an important algorithm as it uses divide and conquer approach and here in this algorithm we divide the array into two arrays where in one array all elements smaller than pivot will be stored and in second all the elements greater than pivot will store.
After getting two arrays we will again apply the same procedure and in last we will be getting the sorted array
the idea is this
and the program is
#include<stdio.h>
#define first 0
void main()
{
int A[]={23,6,5,17,54,2,4,9,76,24,84,286};
int size= sizeof A/sizeof A[0];
quick_sort(A,first,size-1);
output(A,size);
}
void quick_sort(int *A,int p,int r)
{
if(p<r)
{
int pivot=A[r];
int i=p-1,j;
for(j=p;j<r;j++)
{
if(A[j]<pivot)
{
i++;
swap(&A[i],&A[j]);
}
}
A[r]=A[i+1]; /*change the pivot position to its original position where the boundary between two arrays(smaller than pivot and larger than pivot) will exist*/
A[i+1]=pivot;
quick_sort(A,p,i);
/* as the pivot element that we choose is now on i+1 position see above line */
quick_sort(A,i+2,r);
/*we are not passing the pivot(i.e. i+1position) as it is already on its right position*/
}
}
void swap(int *m, int *n)
{
int temp = *m;
*m=*n;
*n=temp;
}
void output(int *A,int size)
{
int i=0;
for(i=0;i<size;i++)
{
printf("%d\n",A[i]);
}
}
After getting two arrays we will again apply the same procedure and in last we will be getting the sorted array
the idea is this
and the program is
#include<stdio.h>
#define first 0
void main()
{
int A[]={23,6,5,17,54,2,4,9,76,24,84,286};
int size= sizeof A/sizeof A[0];
quick_sort(A,first,size-1);
output(A,size);
}
void quick_sort(int *A,int p,int r)
{
if(p<r)
{
int pivot=A[r];
int i=p-1,j;
for(j=p;j<r;j++)
{
if(A[j]<pivot)
{
i++;
swap(&A[i],&A[j]);
}
}
A[r]=A[i+1]; /*change the pivot position to its original position where the boundary between two arrays(smaller than pivot and larger than pivot) will exist*/
A[i+1]=pivot;
quick_sort(A,p,i);
/* as the pivot element that we choose is now on i+1 position see above line */
quick_sort(A,i+2,r);
/*we are not passing the pivot(i.e. i+1position) as it is already on its right position*/
}
}
void swap(int *m, int *n)
{
int temp = *m;
*m=*n;
*n=temp;
}
void output(int *A,int size)
{
int i=0;
for(i=0;i<size;i++)
{
printf("%d\n",A[i]);
}
}