我正在使用快速排序算法對數據進行排序。出於某種原因,當我按id(整數),然後按名稱(字符串)排序時,計算速度比僅從名稱(字符串)開始排序時快。按ID排序然後按名稱比按名稱排序更快?
假設快速排序算法是正確的(我不使用任何隨機或輔助性算法來找到一個很好的支點),數據及其順序都是一樣的,代碼不包含任何錯誤,有什麼事情可能是這個原因?
我正在使用快速排序算法對數據進行排序。出於某種原因,當我按id(整數),然後按名稱(字符串)排序時,計算速度比僅從名稱(字符串)開始排序時快。按ID排序然後按名稱比按名稱排序更快?
假設快速排序算法是正確的(我不使用任何隨機或輔助性算法來找到一個很好的支點),數據及其順序都是一樣的,代碼不包含任何錯誤,有什麼事情可能是這個原因?
它是一種非常簡單的答案,但。使用快速排序時,您的平均性能爲O(n Logn)。所以當你按照id排序的時候,你可能正在使用這段時間。當你在名稱上應用O(n log n)值的計算時。你可能在兩個不同的數據集上進行相同的計算。它就像一般的數學 - 二是大於一。
有一點要注意的是,當你排序字符串,通常會花費更多的時間比你排序整數。 (除非你是整數很長,或者你串短,您使用的ASCII值排序)
我在談論相反的......不知何故2種比1更快 –
我認爲可以爲用戶提供'timeit'聚集了一些計時數據與一些可重複的代碼放在一起示區別? – DeepSpace
通過「按ID和按名稱排序」,您是否使用複雜標準進行單一排序,或者連續進行2次排序?你能提供一個數據看起來像什麼的概念嗎? –
時差約爲8秒。我使用了2次連續排序。我正在編輯此問題以添加代碼和數據示例 –