Merge Sort Algorithm
Merge Sort Algorithm
Description
Merge Sort is a divide-and-conquer sorting algorithm that splits the array into smaller
subarrays, sorts them, and merges them back into a sorted array.
Algorithm
MERGE_SORT(arr, left, right)
1. If left < right:
2. Find mid = (left + right) / 2
3. Call MERGE_SORT(arr, left, mid)
4. Call MERGE_SORT(arr, mid + 1, right)
5. Call MERGE(arr, left, mid, right)
Example
Input: arr = [38, 27, 43, 3, 9, 82, 10]
Steps:
1. Divide the array until subarrays have one element:
- [38, 27, 43, 3, 9, 82, 10]
- Split into [38, 27, 43, 3] and [9, 82, 10]
- Further split: [38, 27], [43, 3], [9, 82], [10]
4. Final merge:
- [3, 27, 38, 43] and [9, 10, 82] → [3, 9, 10, 27, 38, 43, 82]
Code in C
#include <stdio.h>
// Recursively divide
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
// Merge
merge(arr, left, mid, right);
}
}
int main() {
int arr[] = {38, 27, 43, 3, 9, 82, 10};
int size = sizeof(arr) / sizeof(arr[0]);
return 0;
}