マージソートは分割統治型、安定なソート方式で、保証された**O(n log n)**の時間で実行されます。配列を半分に分割し、各半分を再帰的にソートしてから、2つのソート済み半分をマージします。
考え方
単一の要素は既にソートされています(基本ケース)。2つのソート済みリストのマージは線形であり、log n レベルのマージを行います。
例
python
():
(arr) <= :
arr
mid = (arr) //
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
merge(left, right)
():
result, i, j = [], ,
i < (a) j < (b):
a[i] <= b[j]:
result.append(a[i]); i +=
:
result.append(b[j]); j +=
result.extend(a[i:]); result.extend(b[j:])
result
merge_sort([, , , , ])
