#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int count = 0;
void merge(int a[], int low, int mid, int high) {
int i = low, j = mid + 1, k = 0;
int c[10000];
while (i <= mid && j <= high) {
count++; // Count each comparison
if (a[i] < a[j])
c[k++] = a[i++];
else
c[k++] = a[j++];
}
while (i <= mid)
c[k++] = a[i++];
while (j <= high)
c[k++] = a[j++];
for (i = low, j = 0; j < k; i++, j++)
a[i] = c[j];
}
void merge_sort(int a[], int low, int high) {
if (low < high) {
int mid = (low + high) / 2;
merge_sort(a, low, mid);
merge_sort(a, mid + 1, high);
merge(a, low, mid, high);
}
}
int main() {
int a[10000], n, i;
printf("Enter the number of elements in the array: ");
printf("All the elements:\n"); for (i = 0; i < n; i++) {
}
merge_sort(a, 0, n - 1);
printf("\n\nAfter sorting:\n"); for (i = 0; i < n; i++)
printf("\n\nNumber of basic operations = %d\n", count
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCmludCBjb3VudCA9IDA7Cgp2b2lkIG1lcmdlKGludCBhW10sIGludCBsb3csIGludCBtaWQsIGludCBoaWdoKSB7CiAgICBpbnQgaSA9IGxvdywgaiA9IG1pZCArIDEsIGsgPSAwOwogICAgaW50IGNbMTAwMDBdOwoKICAgIHdoaWxlIChpIDw9IG1pZCAmJiBqIDw9IGhpZ2gpIHsKICAgICAgICBjb3VudCsrOyAgLy8gQ291bnQgZWFjaCBjb21wYXJpc29uCiAgICAgICAgaWYgKGFbaV0gPCBhW2pdKQogICAgICAgICAgICBjW2srK10gPSBhW2krK107CiAgICAgICAgZWxzZQogICAgICAgICAgICBjW2srK10gPSBhW2orK107CiAgICB9CgogICAgd2hpbGUgKGkgPD0gbWlkKQogICAgICAgIGNbaysrXSA9IGFbaSsrXTsKICAgIHdoaWxlIChqIDw9IGhpZ2gpCiAgICAgICAgY1trKytdID0gYVtqKytdOwoKICAgIGZvciAoaSA9IGxvdywgaiA9IDA7IGogPCBrOyBpKyssIGorKykKICAgICAgICBhW2ldID0gY1tqXTsKfQoKdm9pZCBtZXJnZV9zb3J0KGludCBhW10sIGludCBsb3csIGludCBoaWdoKSB7CiAgICBpZiAobG93IDwgaGlnaCkgewogICAgICAgIGludCBtaWQgPSAobG93ICsgaGlnaCkgLyAyOwogICAgICAgIG1lcmdlX3NvcnQoYSwgbG93LCBtaWQpOwogICAgICAgIG1lcmdlX3NvcnQoYSwgbWlkICsgMSwgaGlnaCk7CiAgICAgICAgbWVyZ2UoYSwgbG93LCBtaWQsIGhpZ2gpOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCBhWzEwMDAwXSwgbiwgaTsKCiAgICBwcmludGYoIkVudGVyIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5OiAiKTsKICAgIHNjYW5mKCIlZCIsICZuKTsKCiAgICBwcmludGYoIkFsbCB0aGUgZWxlbWVudHM6XG4iKTsKICAgIHNyYW5kKHRpbWUoMCkpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGFbaV0gPSByYW5kKCk7CiAgICAgICAgcHJpbnRmKCIlZCAiLCBhW2ldKTsKICAgIH0KCiAgICBtZXJnZV9zb3J0KGEsIDAsIG4gLSAxKTsKCiAgICBwcmludGYoIlxuXG5BZnRlciBzb3J0aW5nOlxuIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIHByaW50ZigiJWQgIiwgYVtpXSk7CgogICAgcHJpbnRmKCJcblxuTnVtYmVyIG9mIGJhc2ljIG9wZXJhdGlvbnMgPSAlZFxuIiwgY291bnQpOwoKICAgIHJldHVybiAwOwp9Cg==