我刚刚阅读了有关Bucket sort的Wikipedia页面。他们在本文中说,最坏情况下的复杂度是O(n²)。但是我认为最坏情况下的复杂度是O(n + k),其中k是存储桶数。这就是我计算这种复杂度的方法:
我想念什么吗?
如果算法确定每个元素都属于同一存储桶,该怎么办?在这种情况下,每次添加元素时都需要遍历该存储桶中的链接列表。这需要1步,然后2步,然后3、4、5 … n 步。因此,时间是从1到 n 的所有数字的总和,即(n ^ 2 + n)/ 2,即O(n ^ 2)。
当然,这是“最坏的情况”(一个存储桶中的所有元素)-计算放置哪个存储桶的元素的算法通常被设计为避免这种行为。