クイックソートを実現するために 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)