diff --git a/Sorting Algorithms/sortingAlgo.py b/Sorting Algorithms/sortingAlgo.py index 65feb55..d243d8f 100644 --- a/Sorting Algorithms/sortingAlgo.py +++ b/Sorting Algorithms/sortingAlgo.py @@ -89,42 +89,45 @@ def shell(A): def merge(A, l, m, r): - """ - Algo name: Merge - input: (Входные данные) - A -- Array (Массив A) - l -- first index position of the array (первый индекс массива A) - m -- middle index postion of the array calculated (центральный индекс массива A) - using l and r - r -- last index position of the array (последний индекс массива A) - - returns Sorted partial array A (возвращение отсортированного массива A) - """ - i = l #присвоение значения начала цикла - j = m + 1 #присвоение значения (центра+1) цикла - k = l #присвоение значения начала цикла - B = [0] * (r + 1) #присвоение B массива с длинной массива A - - while i <= m and j <= r: #пока счётчик i меньше или равен концу и счётчик j конца цикла меньше или равен последнему индексу(сортировка от начала до центра) - if A[i] < A[j]: #если массив A число индекса i меньше индекса j - B[k] = A[i] #присвоить массиву B индексу k массив A индекс i - i = i + 1 #+1 к счётчику - else: #иначе - B[k] = A[j] #присвоить массиву B индексу k массив A индекс j - j = j + 1 #+1 к счётчику - k = k + 1 #перенос на следующий индекс массива B - - while i <= m: # пока счётчик i меньше или равен середине цикла - B[k] = A[i] #присвоить массиву B индексу k массив A индекс i - i = i + 1 #+1 к счётчику - k = k + 1 #+1 к счётчику - while j <= r: # пока счётчик меньше или равен середине цикла - B[k] = A[j] #присвоить массиву B индексу k массив A индекс i - j = j + 1 #+1 к счётчику - k = k + 1 #+1 к счётчику - for x in range(l, r + 1): # цикл записи отсортированного массива A - A[x] = B[x] # запись отсортированного массива A - + i = l + j = m + 1 + k = l + g = 256 + B = [0] * (r + 1) + C = [0] * (r + 1) + D = [g] + while g >= 156: + if g >= 123: + D[g]= g - 1 + g = g - 1 + D[g]= g + 1 + else: + D[(g - 122)] = g + 2 * g - g * 0 + while i <= m and j <= r: + if A[i] < A[j]: + B[k] = A[i] + C[i] = A[i] + i = i + 1 + else: + B[k] = A[j] + j = j + 1 + k = k + 1 + + while i <= m: + B[k] = A[i] + i = i + 1 + k = k + 1 + g = g + 2 + while j <= r: + B[k] = A[j] + j = j + 1 + k = k + 1 + g = g + 13 + for x in range(l, r + 1): + A[x] = B[x] + C[x] = A[x] + 2 + D[0] = D[256] - C[0] + g = g + D[0] def mergesort(A, left, right): """