一尘不染

桶分类的最坏情况复杂度是什么?

algorithm

我刚刚阅读了有关Bucket
sort
的Wikipedia页面。他们在本文中说,最坏情况下的复杂度是O(n²)。但是我认为最坏情况下的复杂度是O(n
+ k),其中k是存储桶数。这就是我计算这种复杂度的方法:

  1. 将元素添加到存储桶中。使用链表,这是O(1)
  2. 浏览列表并将元素放入正确的存储桶= O(n)
  3. 合并存储桶= O(k)
  4. O(1)* O(n)+ O(k)= O(n + k)

我想念什么吗?


阅读 257

收藏
2020-07-28

共1个答案

一尘不染

如果算法确定每个元素都属于同一存储桶,该怎么办?在这种情况下,每次添加元素时都需要遍历该存储桶中的链接列表。这需要1步,然后2步,然后3、4、5 …
n 步。因此,时间是从1到 n 的所有数字的总和,即(n ^ 2 + n)/ 2,即O(n ^ 2)。

当然,这是“最坏的情况”(一个存储桶中的所有元素)-计算放置哪个存储桶的元素的算法通常被设计为避免这种行为。

2020-07-28