2017-06-16 112 views
1

我正在使用快速排序算法對數據進行排序。出於某種原因,當我按id(整數),然後按名稱(字符串)排序時,計算速度比僅從名稱(字符串)開始排序時快。按ID排序然後按名稱比按名稱排序更快?

假設快速排序算法是正確的(我不使用任何隨機或輔助性算法來找到一個很好的支點),數據及其順序都是一樣的,代碼不包含任何錯誤,有什麼事情可能是這個原因?

+2

我認爲可以爲用戶提供'timeit'聚集了​​一些計時數據與一些可重複的代碼放在一起示區別? – DeepSpace

+1

通過「按ID和按名稱排序」,您是否使用複雜標準進行單一排序,或者連續進行2次排序?你能提供一個數據看起來像什麼的概念嗎? –

+0

時差約爲8秒。我使用了2次連續排序。我正在編輯此問題以添加代碼和數據示例 –

回答

-3

它是一種非常簡單的答案,但。使用快速排序時,您的平均性能爲O(n Logn)。所以當你按照id排序的時候,你可能正在使用這段時間。當你在名稱上應用O(n log n)值的計算時。你可能在兩個不同的數據集上進行相同的計算。它就像一般的數學 - 二是大於一。

有一點要注意的是,當你排序字符串,通常會花費更多的時間比你排序整數。 (除非你是整數很長,或者你串短,您使用的ASCII值排序)

+1

我在談論相反的......不知何故2種比1更快 –