私は十分に小さいテストケース(N = 20)に対して正しい論理出力を検証しているので、かなり混乱しています。私はN = 10,000の数字をやろうとしていますが、プログラムがハングアップするだけです。理由はわかりません。できるだけ簡単にアルゴリズムを実装しました。PythonのQuickSort - 入力サイズが大きい場合にプログラムがハングアップしますか?
また、私のN = 10Kリストにsorted(data)
を呼び出すと、ほぼ瞬時に動作するようです。だから、私のアルゴリズムはちょうどどこかに詰まっていると確信しています。ここで
コードです:だから私はかなりこれが起こっ可能理由を失ってい
def QuickSort(array):
qsort(array, 0, len(array))
def qsort(arr, left, right):
if ((right - left) < 2):
return
pivotIndex = choosePivot0(arr, left, right)
newPivotIndex = partition(arr, pivotIndex, left, right)
qsort(arr, 0, newPivotIndex)
qsort(arr, newPivotIndex + 1, right)
def partition(arr, pivotIndex, left, right):
swap(arr, pivotIndex, left)
pivot = arr[left]
i = left + 1
for j in range(left+1, right):
if (arr[j] < pivot):
swap(arr, i, j)
i = i + 1
swap(arr, left, i-1) #put pivot back where it belongs
#cobj.count = cobj.count + (right - left - 1) #add m-1 the #of comparisons
return (i-1) #give back where the pivot resides
def swap(array, i, j):
temp = array[i]
array[i] = array[j]
array[j] = temp
def choosePivot0(array, left, right):
return randint(left, right-1) #random
。助けてくれてありがとう。
コードが10kデータをソートするまでにどれくらいの時間がかかりましたか?私は非常にシンプルなqsortと 'sys.setrecursionlimit(2 ** 30)'を実装しました。 '[2,3] 5 * 10000、つまり30kのデータをソートするのに20〜30秒かかります。 – xiaowl