Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. def counted_effective_sort(A):
  2.     global counter
  3.    
  4.     def merge(A, left, mid, right):
  5.         global counter
  6.        
  7.         counter += 2
  8.         res, res_index = [], []
  9.        
  10.         counter += 2
  11.         i, j = left, mid + 1
  12.        
  13.         while i <= mid and j <= right:
  14.             counter += 2
  15.             if A[i] <= A[j]:
  16.                 counter += 1
  17.                 res.append(A[i])
  18.                 counter += 1
  19.                 i += 1
  20.             else:
  21.                 counter += 1
  22.                 res.append(A[j])
  23.                 counter += 1
  24.                 j += 1
  25.        
  26.         counter += 2
  27.         rem_index, border = (i, mid) if (j == right + 1) else (j, right)
  28.        
  29.            
  30.         res.extend(A[rem_index:border + 1])
  31.        
  32.         counter += right + 1 - left
  33.         A[left:right+1] = res
  34.  
  35.     def merge_sort(A, left, right):
  36.         global counter
  37.        
  38.         counter += 1
  39.         if left >= right: return
  40.        
  41.         counter += 1
  42.         mid = (left + right) // 2
  43.        
  44.         counter += 1
  45.         merge_sort(A, left, mid)
  46.        
  47.         counter += 1
  48.         merge_sort(A, mid + 1, right)
  49.        
  50.         counter += 1
  51.         merge(A, left, mid, right)
  52.    
  53.     counter += len(A)
  54.     merge_sort(A, 0, len(A) - 1)
  55.    
  56.     return A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement