# Merge Sort Merge Sort is a Divide and Conquer algorithm. It divides the input array into two halves, calls itself for the two halves, and then merges the two sorted halves. ## Steps 1. Find the middle point to divide the array into two halves. 2. Call mergeSort for first half. 3. Call mergeSort for second half. 4. Merge the two halves sorted in step 2 and 3. ## Example Given array is **12 11 13 5 6 7** Sorted array is **5 6 7 11 12 13** ## Implementation - [Java](../../../algorithms/Java/sorting/merge-sort.java) - [C](../../../algorithms/C/sorting/merge-sort.c) - [C++](../../../algorithms/CPlusPlus/Sorting/merge-sort.cpp) - [JavaScript](../../../algorithms/JavaScript/src/sorting/merge-sort.js) - [Python](../../../algorithms/Python/sorting/merge_sort.py) - [C#](../../../algorithms/CSharp/src/Sorts/merge-sort.cs) ## Video URL [Youtube Video about Merge Sort](https://www.youtube.com/watch?v=jlHkDBEumP0) ## Others [Wikipedia](https://en.wikipedia.org/wiki/Merge_sort)