merge_sort
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void merge(int a[],int l,int mid,int h){
int i,j,k;
int b[h+1];
i=l,j=mid+1,k=l;
while(i<=mid && j<=h){
if(a[i]<a[j]){
b[k++]=a[i++];
}
else
b[k++]=a[j++];
}
for(;i<=mid;i++){
b[k++]=a[i];
}
for(;j<=mid;j++){
b[k++]=b[i];
}
for(i=l;i<=h;i++){
a[i] = b[i];
}
}
void mergeSort(int a[],int l,int h){
int mid;
if(l<h){
mid = (l+h)/2;
mergeSort(a,l,mid);
mergeSort(a,mid+1,h);
merge(a,l,mid,h);
}
}
int main(){
clock_t start_time = clock();
int n;
printf("Enter the no. of elements:");
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
a[i] = rand() % 100;
}
mergeSort(a,0,n-1);
clock_t stop_time = clock();
printf("Sorted element are: \n");
for(int i=0;i<n-1;i++){
printf("%d ",a[i]);
}
double timetake = (double)(stop_time-start_time)/CLOCKS_PER_SEC;
printf("%lf time take ",timetake);
return 0;
}
Comments
Post a Comment