QuickSort using recursion


#include<stdio.h>
#include<conio.h>

int Qsort(int *arr,int min,int max)
{
   int ploc=min,j,tmp;
   for(j=min+1;j<=max;j++)
   {
      if(arr[j]<arr[min])
      {
         ploc++;
         tmp=arr[j];
         arr[j]=arr[ploc];
         arr[ploc]=tmp;
      }
   }
   tmp=arr[ploc];
   arr[ploc]=arr[min];
   arr[min]=tmp;
   return ploc;
}

void quicksort(int *arr,int min,int max)
{
    int ploc;
    if(min<max)
    {
        ploc=Qsort(arr,min,max);
        quicksort(arr,min,ploc-1);
        quicksort(arr,ploc+1,max);
    }
}

void main()
{
    int *arr,size,i;
    printf("\nEnter the size of the Array:");
    scanf("%d",&size);
    arr=(int*)malloc(sizeof(int)*size);
    printf("\nEnter any %d Numbers:\n",size);
    for(i=0;i<size;i++)
    scanf("%d",&arr[i]);
    quicksort(arr,0,size-1);
    printf("\n\nSorted Array:");
    for(i=0;i<size;i++)
    printf("%d ",arr[i]);
    getch();
}


No comments: