RECURSIVE BALANCED QUICK SORT - Insurance Tips

A Hub of Best Guide Health Insurance Tips

Sunday, May 22, 2022

RECURSIVE BALANCED QUICK SORT

 

#include<stdio.h>

#include<conio.h>

void qsort(int a[],int,int);

void partition(int a[],int,int,int *);

void print(int *,int);

void swap(int *,int *);

 

void main()

{

  int a[30],i,n;

  flushall();

   clrscr();

  printf("

 enter how many data u want :");

  scanf("%d",&n);

 

  printf("

 enter the data :");

   for(i=0;i<n;i++)

   {

      printf("

 %d .",i);

      scanf("%d",&a[i]);

   }

    qsort(a,0,n-1);

    printf("

 SORTED DATA:

");

    print(a,n-1);

   getch();

}

void qsort(int a[],int lb,int ub)

 {

   int j;

   if(ub>lb)

   {

   partition(a,lb,ub,&j);

   qsort(a,lb,j-2);

   qsort(a,j+2,ub);

   }

 }

void partition(int a[],int lb,int ub,int *j)

{

 

  int mid=(lb+ub)/2,temp,up,down,pivot;

  pivot=a[mid];

  up=ub;

  down=lb;

 while(down<up)

 {

     while( a[down] <= pivot && down <= ub )

       {

                 down++;

                 if(a[down]<a[down-1]&&down>lb)

                    swap(&a[down],&a[down-1]);

                }

      while(a[up]>pivot)

       {

                up--;

                if(a[up]>a[up+1]&&up<ub)

                 swap(&a[up],&a[up+1]);

       }

      if(down<up)

      {

                  swap(&a[down],&a[up]);

      if(a[down]<a[down-1]&&down>0)

                  swap(&a[down],&a[down-1]);

      if(a[up]>a[up+1]&&up<ub)

                  swap(&a[up],&a[up+1]);

      }

 

 }

  for(int i=0;i<ub-1;i++)

    if(a[i]>a[i+1])

      swap(&a[i],&a[i+1]);

  *j=up;

}

void print(int a[],int n)

{

  for(int i=0;i<=n;i++)

     printf("

%d   .   %d",i,a[i]);

}

void swap(int *p,int *q)

{

  int t;

  t=*p;

  *p=*q;

  *q=t;

}

No comments:

Post a Comment