ctw6av
(usa Nenhuma)
Enviado em 03/12/2016 - 09:44h
* O módulo Thread não é necessário já que você importou o threading logo em seguida.
* O módulo time não está senso usado.
* Esta linha abaixo, gera um erro já que o valor posicional da lista devem ser inteiros e dessa forma a operação abaixo retorna um valor do tipo float.
pivot = sets[(left + right) / 2]
Adicionado duas barras "//" ela retorna um inteiro e resolve o problema.
* Alguns parênteses não são necessários
* A função lambda não é necessária
* O loop infinito, na verdade, não é loop infinito. Ele se dá pelo tamanho da lista passada com 99999 valores, processar todos demanda tempo e dependendo do pc pode demorar um bom tempo. Tente com um valor menor e verá.
OBS: Não alterei a parte lógica, foram apenas pequenos erros e de nada afetaram na parte lógica.
Depois de checar esses pontos o código ficou assim:
#!/usr/bin/env python3
from random import randint
import threading
def qsort(sets, left, right):
print("thread {} is sorting {}".format(threading.current_thread(), sets[left:right]))
i = left
j = right
pivot = sets[(left + right) // 2]
temp = 0
while i <= j:
while pivot > sets[i]:
i += 1
while pivot < sets[j]:
j -= 1
if i <= j:
temp = sets[i]
sets[i] = sets[j]
sets[j] = temp
i += 1
j -= 1
lthread = None
rthread = None
if left < j:
lthread = threading.Thread(target=qsort, args=(sets, left, j))
lthread.start()
if i < right:
rthread = threading.Thread(target=qsort, args=(sets, i, right))
rthread.start()
if lthread is not None:
lthread.join()
if rthread is not None:
rthread.join()
return sets
def vetrandom():
lista = []
for i in range(100):
n = randint(1, 100)
lista.append(n)
return lista
def main():
vetale = vetrandom()
vetord = qsort(vetale, 0, len(vetale) - 1)
print(vetord)
# print(set(vetord)) # Remove os valores repetidos da lista
if __name__ == "__main__":
main()
______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro:
http://biebian.sourceforge.net/