Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def counted_effective_sort(A):
- global counter
- def merge(A, left, mid, right):
- global counter
- counter += 2
- res, res_index = [], []
- counter += 2
- i, j = left, mid + 1
- while i <= mid and j <= right:
- counter += 2
- if A[i] <= A[j]:
- counter += 1
- res.append(A[i])
- counter += 1
- i += 1
- else:
- counter += 1
- res.append(A[j])
- counter += 1
- j += 1
- counter += 2
- rem_index, border = (i, mid) if (j == right + 1) else (j, right)
- res.extend(A[rem_index:border + 1])
- counter += right + 1 - left
- A[left:right+1] = res
- def merge_sort(A, left, right):
- global counter
- counter += 1
- if left >= right: return
- counter += 1
- mid = (left + right) // 2
- counter += 1
- merge_sort(A, left, mid)
- counter += 1
- merge_sort(A, mid + 1, right)
- counter += 1
- merge(A, left, mid, right)
- counter += len(A)
- merge_sort(A, 0, len(A) - 1)
- return A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement