![](/img/trans.png)
[英]How is the time complexity of Bucket Sort O(n+k) if it uses insertion sort to sort each bucket?
[英]How could the complexity of bucket sort is O(n+k)?
在說“之前已經被問過”或“找到算法書”之前,請繼續閱讀並告訴我,我的推理部分出了什么問題?
假設你有n個整數,並且你將它們分成k個分區,這將花費O(n)時間。 但是,需要對每個k bin進行排序,如果對每個bin使用快速排序這是一個O((n / k) log(n / k))操作,那么這一步將需要O(n log(n / n) K)+ K)。 最后需要組裝這個數組,這需要O(n + k),(參見這篇文章 ),所以總操作將是O(n + n log(n / k)+ k)。 現在,這個n log(n / k)是如何消失的,我完全無法想象。 我的猜測是有一些數學可以消除這個n * log(n / k)。 有人可以幫忙嗎?
您的缺陷是假設快速排序用於對鏟斗進行分類。 通常情況並非如此,這就是你如何避免(n / k) log(n / k)
條款。
你的分析看起來不錯。 術語Bucketsort用於許多不同的算法,因此根據您查看的算法,其平均運行時間可能是O(n + k)。
如果我不得不猜測,你可能已經看過一個典型的變體,其中一個選擇k非常大,因此n / k將是一個常數。 在另一個流行的變體中甚至是k >> n,所以一個分為k / n桶。
如果你提供詳細的算法和聲稱這是平均O(n + k)的來源我可以重新審視我的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.