AOA Experiment 3
AOA Experiment 3
Code:
#include <stdio.h>
int b[100]; // or temp[100]; Temporary array
void merge(int arr[], int LB, int mid, int UB) {
int i = LB, j = mid + 1, k = LB;
while (i <= mid && j <= UB) {
if (arr[i] < arr[j]) {
b[k] = arr[i];
i++;
} else {
b[k] = arr[j];
j++;
}
k++;
}
while (i <= mid) { // Copy remaining left half
b[k] = arr[i];
i++;
k++;
}
while (j <= UB) { // Copy remaining right half
b[k] = arr[j];
j++;
k++;
}
for (k = LB; k <= UB; k++) { // Copy back to original array
arr[k] = b[k];
}
}
void mergeSort(int arr[], int LB, int UB) {
if (LB < UB) {
int mid = (LB + UB) / 2;
mergeSort(arr, LB, mid);
mergeSort(arr, mid + 1, UB);
merge(arr, LB, mid, UB);
}
}
int main() {
int arr[] = {31, 12, 55, 29, 67, 48};
int size = 6; //sizeof(arr) / sizeof(arr[0]);
int LB = 0, UB = size - 1;
int i;
printf("Unsorted array: ");
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
Output: