You are on page 1of 2

// Online C compiler to run C program online

#include <stdio.h>
#include <stdlib.h>

void merge(int arr[], int left[], int leftSize, int right[], int rightSize) {
int i = 0, j = 0, k = 0;

while (i < leftSize && j < rightSize) {


if (left[i] <= right[j]) {
arr[k++] = left[i++];
} else {
arr[k++] = right[j++];
}
}

while (i < leftSize) {


arr[k++] = left[i++];
}

while (j < rightSize) {


arr[k++] = right[j++];
}
}

void mergeSort(int arr[], int size) {


if (size <= 1) {
return;
}

int mid = size / 2;


int left[mid];
int right[size - mid];

for (int i = 0; i < mid; i++) {


left[i] = arr[i];
}

for (int i = mid; i < size; i++) {


right[i - mid] = arr[i];
}

mergeSort(left, mid);
mergeSort(right, size - mid);
merge(arr, left, mid, right, size - mid);
}

int isUnique(int arr[], int size) {


// Sort the array using merge sort
mergeSort(arr, size);

// Check for duplicate elements


for (int i = 0; i < size - 1; i++) {
if (arr[i] == arr[i + 1]) {
return 0; // Not unique
}
}

return 1; // Unique
}
int main() {
int size, i;
char choice;

while (1) {
printf("Enter the size of the array: ");
scanf("%d", &size);

int arr[size];

printf("Enter the elements of the array:\n");


for (i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}

// Sort the array using merge sort


mergeSort(arr, size);

printf("Sorted Array: ");


for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");

if (isUnique(arr, size)) {
printf("All elements in the array are unique.\n");
} else {
printf("There are duplicate elements in the array.\n");
}

return 0;
}

You might also like