【发布时间】:2022-01-10 20:37:40
【问题描述】:
下面的countsort实现的复杂度是多少?
void countSort(vector<int>& input)
{
map<int, int> freq;
for (int x: input) {
freq[x]++;
}
int i = 0;
for (auto p: freq)
{
while (p.second--) {
input[i++] = p.first;
}
}
}
有人告诉我这是 O(n)。这不是for,
for (int x: input) {
freq[x]++;
}
使其 O(n log n) 因为 C++ 中的 map 容器是平衡的 BST,而插入操作是 O(log n) ?
【问题讨论】:
-
是的,不是一个很好的实现。
标签: c++ sorting dictionary