Written by Wyes
#include<stdio.h>
#include<stdlib.h>
int *a;
void quicksort(int,int);
int partition(int,int);
void swap_w(int,int);
int random_partition(int,int);
int random_number(int,int);
main()
{
int i,j,n;
printf("Enter the number of elements ");
scanf("%d",&n);
a=(int *)calloc(n,sizeof(int));
printf("Enter the elements\n");
for(i=0;i<n;i++)
scanf("%d",a+i);
quicksort(0,n-1);
printf("The sorted sequence is\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return;
}
void quicksort(int i,int j)
{
int k;
if(j-i<1)
return;
else
{
k=random_partition(i,j);
quicksort(i,k-1);
quicksort(k+1,j);
return;
}
}
random_partition(int i,int j)
{
int k;
k=random_number(i,j);
swap_w(k,j);
return(partition(i,j));
}
int partition(i,j)
{
int m,n;
m=i-1;
for(n=i;n<j;n++)
{
if(a[n]<=a[j])
{
m++;
swap_w(m,n);
}
}
swap_w(m+1,j);
return(m+1);
}
int random_number(int i,int j)
{
return((rand()%(j-i))+i);
}
void swap_w(int i,int j)
{
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
return;
}
0 comments:
Post a Comment