« Nice CSS tab menu with PHP | Home | Oracle: text of the running SQL queries »

Recursive quicksort


#include
#include
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 {
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 {
while( a[down] <= pivot && down <= ub )
{
down++;
if(a[down]lb)
swap(&a[down],&a[down-1]);
}
while(a[up]>pivot)
{
up--;
if(a[up]>a[up+1]&&up swap(&a[up],&a[up+1]);
}
if(down {
swap(&a[down],&a[up]);
if(a[down]0)
swap(&a[down],&a[down-1]);
if(a[up]>a[up+1]&&up swap(&a[up],&a[up+1]);
}

}
for(int i=0;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;
}

Topics: C++ | Submitter: admin

Comments

You must be logged in to post a comment.