Simple sorts like bubble sort take O(n²), which is far too slow for a million elements. Merge sort splits the array in half, sorts each half and merges them, giving O(n log n) in every case. Use it when you need a guaranteed bound or a stable sort, and its merge step also counts inversions or merges sorted lists. Its cost is O(n) extra space, so quick sort is often preferred for in-place sorting of plain arrays.