DSA_5: Sắp xếp hòa trộn | Merge sort.
Giải thuật:
- Chia đôi mảng một cách đệ quy.
- Sắp xếp các mảng con và gộp chúng lại.
Minh họa:
Code Python:
xxxxxxxxxx
def mergeSort(arr):
if len(arr) > 1:
mid = len(arr) // 2
L = arr[:mid]
R = arr[mid:]
mergeSort(L)
mergeSort(R)
i = j = k = 0
while i < len(L) and j < len(R):
if L[i] < R[j]:
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j += 1
k += 1
while i < len(L):
arr[k] = L[i]
i += 1
k += 1
while j < len(R):
arr[k] = R[j]
j += 1
k += 1
Độ phức tạp:
- Best:
- Average:
- Worst: