Merge sort is a sorting algorithm that uses a divide and conquer approach to sort arrays and linked lists. It divides the list into halves, recursively sorts each sublist, and then merges the sorted sublists into a single sorted list. With a time complexity of O(n log n), merge sort is one of the most efficient sorting algorithms as it keeps dividing lists into smaller sorted runs that are then merged back together.