#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void fillArray(int array[], int n)
{
time_t t;
time(&t
);//get current time srand(t
);//gives current time as seed for random number generator
for(int i = 0; i < n; i++)
{
array
[i
] = rand()%(10*n
);//Doing mod to avoid very large numbers }
}
void printArray(int array[], int n)
{
for(int i = 0; i < n; i++)
{
}
}
void mergeSort(int A[],int n){
int i;
int mid=n/2;
int p=(n-mid);
int w=sizeof(A[mid]);
int x=sizeof(A[p]);
int Aleft[w];
int Aright[x];
for(i=0;i<(mid-1);i++){
Aleft[i]=A[i];
}
for(i=mid;i<(n-1);i++){
Aright[i-mid]=A[i];
}
mergeSort(Aleft,n/2);
mergeSort(Aright,n/2);
merge(Aleft,Aright,A);
}
void merge(int lArray[], int rArray[],int Array[])
{
int nL=sizeof(lArray);
int nR=sizeof(rArray);
int i=0;
int j=0;
int k=0;
while((i<nL)&&(j<nR)){
if(lArray[i]<=rArray[j]){
Array[k]=lArray[i];
i++;
}
else{
Array[k]=rArray[j];
j++;
}
k++;
}
}
int main()
{
int *Array, n=8;
//int p=(n-mid);
clock_t start, end;
double cpu_time_used;
//printf("Enter the no. of numbers: ");
//scanf("%d", &n);
Array
= malloc(n
* sizeof(int)); //lArray = malloc(mid * sizeof(int));
//rArray = malloc((n-mid) * sizeof(int));
fillArray(Array, n);
//fillArray(lArray, mid);
//fillArray(rArray, p);
mergeSort(Array,n);
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printArray(Array, n);
printf("\n \n Time taken for sorting: %f seconds\n\n",cpu_time_used
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAgICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgICAjaW5jbHVkZSA8dGltZS5oPgogCiAgICB2b2lkIGZpbGxBcnJheShpbnQgYXJyYXlbXSwgaW50IG4pCiAgICB7CiAgICAJdGltZV90IHQ7CiAgICAJdGltZSgmdCk7Ly9nZXQgY3VycmVudCB0aW1lCiAgICAJc3JhbmQodCk7Ly9naXZlcyBjdXJyZW50IHRpbWUgYXMgc2VlZCBmb3IgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKIAogCiAgICAJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIAl7CiAgICAJCWFycmF5W2ldID0gcmFuZCgpJSgxMCpuKTsvL0RvaW5nIG1vZCB0byBhdm9pZCB2ZXJ5IGxhcmdlIG51bWJlcnMKICAgIAl9CiAgICB9CiAgICB2b2lkIHByaW50QXJyYXkoaW50IGFycmF5W10sIGludCBuKQogICAgewogICAgCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAJewogICAgCQlwcmludGYoIiVkICIsIGFycmF5W2ldKTsKICAgIAl9CiAgICB9CiAgICB2b2lkIG1lcmdlU29ydChpbnQgQVtdLGludCBuKXsKICAgIAlpbnQgaTsKICAgIAlpbnQgbWlkPW4vMjsKICAgIAlpbnQgcD0obi1taWQpOwogCiAgICAJaW50IHc9c2l6ZW9mKEFbbWlkXSk7CiAgICAJaW50IHg9c2l6ZW9mKEFbcF0pOwogICAgCWludCBBbGVmdFt3XTsKICAgIAlpbnQgQXJpZ2h0W3hdOwogICAgCWZvcihpPTA7aTwobWlkLTEpO2krKyl7CiAgICAJCUFsZWZ0W2ldPUFbaV07CiAgICAJfQogICAgCWZvcihpPW1pZDtpPChuLTEpO2krKyl7CiAgICAJCUFyaWdodFtpLW1pZF09QVtpXTsKICAgIAl9CiAgICAJbWVyZ2VTb3J0KEFsZWZ0LG4vMik7CiAgICAJbWVyZ2VTb3J0KEFyaWdodCxuLzIpOwogICAgCW1lcmdlKEFsZWZ0LEFyaWdodCxBKTsKIAogICAgfQogCiAgICB2b2lkIG1lcmdlKGludCBsQXJyYXlbXSwgaW50IHJBcnJheVtdLGludCBBcnJheVtdKQogICAgewogICAgCWludCBuTD1zaXplb2YobEFycmF5KTsKICAgIAlpbnQgblI9c2l6ZW9mKHJBcnJheSk7CiAgICAJaW50IGk9MDsKICAgIAlpbnQgaj0wOwogICAgCWludCBrPTA7CiAgICAJd2hpbGUoKGk8bkwpJiYoajxuUikpewogICAgCQlpZihsQXJyYXlbaV08PXJBcnJheVtqXSl7CiAgICAJCQlBcnJheVtrXT1sQXJyYXlbaV07CiAgICAJCQlpKys7CiAgICAJCX0KICAgIAkJZWxzZXsKICAgIAkJCUFycmF5W2tdPXJBcnJheVtqXTsKICAgIAkJCWorKzsKICAgIAkJfQogICAgCQlrKys7CiAgICAJfQogICAgfQogICAgaW50IG1haW4oKQogICAgewogICAgCWludCAqQXJyYXksIG49ODsKIAoJCS8vaW50IHA9KG4tbWlkKTsKIAogICAgCWNsb2NrX3Qgc3RhcnQsIGVuZDsKICAgICAgICBkb3VibGUgY3B1X3RpbWVfdXNlZDsKIAogICAgCS8vcHJpbnRmKCJFbnRlciB0aGUgbm8uIG9mIG51bWJlcnM6ICIpOwogICAgCS8vc2NhbmYoIiVkIiwgJm4pOwogICAgCUFycmF5ID0gbWFsbG9jKG4gKiBzaXplb2YoaW50KSk7CiAgICAJLy9sQXJyYXkgPSBtYWxsb2MobWlkICogc2l6ZW9mKGludCkpOwogICAgCS8vckFycmF5ID0gbWFsbG9jKChuLW1pZCkgKiBzaXplb2YoaW50KSk7CiAgICAJZmlsbEFycmF5KEFycmF5LCBuKTsKICAgIAkvL2ZpbGxBcnJheShsQXJyYXksIG1pZCk7CiAgICAJLy9maWxsQXJyYXkockFycmF5LCBwKTsKICAgIAlzdGFydCA9IGNsb2NrKCk7CiAKICAgIAltZXJnZVNvcnQoQXJyYXksbik7CiAKICAgIAllbmQgPSBjbG9jaygpOwogCiAgICAJY3B1X3RpbWVfdXNlZCA9ICgoZG91YmxlKSAoZW5kIC0gc3RhcnQpKSAvIENMT0NLU19QRVJfU0VDOwogICAgCXByaW50QXJyYXkoQXJyYXksIG4pOwogICAgCXByaW50ZigiXG4gXG4gVGltZSB0YWtlbiBmb3Igc29ydGluZzogICVmIHNlY29uZHNcblxuIixjcHVfdGltZV91c2VkKTsKICAgIAlyZXR1cm4gMDsKICAgIH0KIA==