Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Код лаб / MergeSort

.py
Скачиваний:
0
Добавлен:
28.12.2024
Размер:
1.24 Кб
Скачать
from array import array
import ctypes
from LinkedList import LinkedList
from ArrayList import ArrayList
import random

def Merge(array, left, mid, right):
  left_size = mid - left + 1
  right_size = right - mid

  left_list = ArrayList()
  for i in range(0, left_size):
    left_list.add(array.get(left+i))

  right_list = ArrayList()
  for j in range(0, right_size):
    right_list.add(array.get(mid + 1 + j))

  i = j = 0
  k = left

  while i < left_size and j < right_size:
    if left_list.get(i) <= right_list.get(j):
      array.set(k, left_list.get(i))
      i += 1
    else:
      array.set(k, right_list.get(j))
      j += 1
    k += 1

  while i < left_size:
    array.set(k, left_list.get(i))
    i += 1
    k += 1

  while i < right_size:
    array.set(k, right_list.get(j))
    j += 1
    k += 1

def MergeSort(array, left, right):
  if left < right:
    mid = left + (right - left) // 2
    MergeSort(array, left, mid)
    MergeSort(array, mid+1, right)
    Merge(array, left, mid, right)

#myList = ArrayList()
"""for i in range(10):
  myList.add(random.randint(0,100))
for i in range(10):
    print ("% d" % myList.get(i))

MergeSort(myList, 0, 9)
print("Result")
for i in range(10):
    print ("% d" % myList.get(i))"""

Соседние файлы в папке Код лаб