Enviado em 02/12/2016 - 20:34h
Olá pessoal estou fazendo um quicksort em python com thread so que ele esta entrando em loop infinito podem me ajudar, aqui vai o código:
[code]:
from threading import Thread
import threading
import time
import thread
import random
def qsort(sets,left,right):
i = left
j = right
pivot = sets[(left + right)/2]
temp = 0
while(i <= j):
while(pivot > sets[i]):
i = i+1
while(pivot < sets[j]):
j = j-1
if(i <= j):
temp = sets[i]
sets[i] = sets[j]
sets[j] = temp
i = i + 1
j = j - 1
lthread = None
rthread = None
if (left < j):
lthread = Thread(target = lambda: qsort(sets,left,j))
lthread.start()
if (i < right):
rthread = Thread(target=lambda: qsort(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(99999):
n = random.randint(1,99999)
lista.append(n)
return lista
def main():
vetale = []
vetord = []
vetale = vetrandom()
vetord = qsort(vetale, 0, len(vetale) - 1)
print vetord
if __name__ == "__main__":
main()
[code]:
Obrigado, desculpa de não foi identado , parece que a caixinha não deixa
[code]:
from threading import Thread
import threading
import time
import thread
import random
def qsort(sets,left,right):
i = left
j = right
pivot = sets[(left + right)/2]
temp = 0
while(i <= j):
while(pivot > sets[i]):
i = i+1
while(pivot < sets[j]):
j = j-1
if(i <= j):
temp = sets[i]
sets[i] = sets[j]
sets[j] = temp
i = i + 1
j = j - 1
lthread = None
rthread = None
if (left < j):
lthread = Thread(target = lambda: qsort(sets,left,j))
lthread.start()
if (i < right):
rthread = Thread(target=lambda: qsort(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(99999):
n = random.randint(1,99999)
lista.append(n)
return lista
def main():
vetale = []
vetord = []
vetale = vetrandom()
vetord = qsort(vetale, 0, len(vetale) - 1)
print vetord
if __name__ == "__main__":
main()
[code]:
Obrigado, desculpa de não foi identado , parece que a caixinha não deixa