我通過Python做了mergesort,它工作正常。我需要計算比較,當這種合併排序正在運行。我聲明全局變量'merge_compare_count',因爲這是遞歸函數。我使用隨機數列表A的元素。mergesort計數比較
但問題是,每當我運行這段代碼時,我總是得到相同的merge_compare_count。我不知道爲什麼....
例如,當A獲得了5000個隨機不同的元素,但merge_compare_count總是123616.
任何幫助將欣賞返回相同的!
我通過Python做了mergesort,它工作正常。我需要計算比較,當這種合併排序正在運行。我聲明全局變量'merge_compare_count',因爲這是遞歸函數。我使用隨機數列表A的元素。mergesort計數比較
但問題是,每當我運行這段代碼時,我總是得到相同的merge_compare_count。我不知道爲什麼....
例如,當A獲得了5000個隨機不同的元素,但merge_compare_count總是123616.
任何幫助將欣賞返回相同的!
這不是問題。寫它的方式,你的代碼只有一個確定的步驟數量,只取決於大小,而不取決於數值。你甚至可以像這樣計算它們:
>>> def f(n):
return 0 if n < 2 else f(n/2) + f(n-n/2) + 2*n
>>> f(5000)
123616
或*只是*超過2 xnx log2(n),這完全是O(NlogN)算法的預期結果。 –
謝謝!我知道了!! –
@MartijnPieters是的,特別是對於Θ(n log n)之一。這實際上幾乎是2n⋅log2(n),這並不奇怪。對於2的冪,就是這樣。 –
爲什麼你認爲這是一個問題? –
因爲listA隨機獲得不同數量的元素,但總是相同的結果是奇怪的......我認爲...... –
並不奇怪。此外,請正確縮進並將「500」更正爲「5000」。 –