text: from data.nomes_desord import nomes
  from time import time
  import tracemalloc
  import psutil
  #   ALGORITMO DE ORDENAÇÃO MERGE SORT
  # 
  #
  #   No processo de ordenação, esse algoritmo "desmonta" o vetor original
  #   contendo N elementos até obter N vetores de apenas um elemento cada um.
  #   Em seguida, usando a técnica de mesclagem (merge), "remonta" o vetor,
  #   dessa vez com os elementos já em ordem.
  
  comps = 0
  divisoes = 0
  juncoes = 0
  
  def merge_sort(lista):
      global comps, divisoes, juncoes
      #print(f'lista recebida: {lista}')
  
      if len(lista) <= 1:
  
          return lista
  
      meio = len(lista) // 2
  
      lista_esq = lista[:meio]
      lista_dir = lista[meio:]
      divisoes += 1
  
  
      lista_esq = merge_sort(lista_esq)
      lista_dir = merge_sort(lista_dir)
  
      #print(f'>>>> lista_esq: {lista_esq}')
      #print(f'>>>> lista_dir: {lista_dir}')
  
      pos_esq = 0
      pos_dir = 0
      ordenada = []
  
      while pos_esq < len(lista_esq) and pos_dir < len(lista_dir):
  
          if lista_esq[pos_esq] < lista_dir[pos_dir]:
              ordenada.append(lista_esq[pos_esq])
              pos_esq +=1
  
          else:
              ordenada.append(lista_dir[pos_dir])
              pos_dir +=1
          comps += 1
  
      sobra = None
  
      if pos_esq < pos_dir:
          sobra = lista_esq[pos_esq:]
  
      else:
          sobra = lista_dir[pos_dir:]
      #print(f'<<<<<< final ordenada: {ordenada+sobra}')
      juncoes += 1
      return ordenada + sobra
  
  comps = 0
  divisoes = 0
  juncoes = 0
  
  a = [2, 84, 66, 4, 14, 9, 95,57, 34, 10, 5, 8]
  
  b = [88, 44, 33, 0, 99, 55, 77, 22, 11, 66]
  
  c = [99, 88, 77, 66, 55, 44, 33, 22, 11, 0]
  
  d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
  e = [99,0,11,22,33,44,55,66,77,88]
  
  muda = nomes
  
  comps = 0
  divisoes = 0
  juncoes = 0
  
  #print(muda)
  ini = time()
  tracemalloc.start()
  nums_ord = merge_sort(muda)
  mem_atual, mem_pico = tracemalloc.get_traced_memory()
  fim = time()
  print(f'Tempo: {fim-ini}')
  print(f'Pico de memoria: {mem_pico / 1024 / 1024}MB')
  print('RAM memory % used:', psutil.virtual_memory()[2])
  print('The CPU usage is: ', psutil.cpu_percent(4))
  print(f"Comparações: {comps}, divisões: {divisoes}, junções: {juncoes}")
  #print(nums_ord)