我使用 Python 多线程来实现快速排序。快速排序是在一个函数中实现的。它是一个递归函数。每个线程调用 Quicksort 对其拥有的数组进行排序。每个线程都有自己的数组来存储需要排序的数字。如果数组大小更小(<10,000)。它运行正常。但是,如果数组大小较大,则显示“超出最大递归深度”。于是,我使用 setrecursionlimit() 函数将递归深度重置为 1500。但是程序直接崩溃了……下面是快速排序代码。如果不在多线程环境中,它工作得很好。似乎多线程是递归深度问题的原因。
def partition (array, p, r):
x = array[r]
i = (p-1)
j = p
while (1):
if array[j] <= x:
i = (i+1)
temp = array[j]
array[j] = array[i]
array[i] = temp
j+=1
if j == r:
break
temp = array[i+1]
array[i+1] = array[r]
array[r] = temp
return i+1
def quicksort (array, p, r):
if p < r:
q = partition (array, p, r)
quicksort (array, p, q-1)
quicksort (array, q+1, r)