将数组的元素插入映射的时间复杂度是多少?
What is the time complexity of inserting elements of an array into a map?
如果在映射中插入元素需要log(N(时间,其中N是映射的大小。 然后逐个插入数组的元素意味着 log(1(+log(2(+....+log(N( = log(N!( 复杂度。但是对元素进行排序的正常最佳复杂性是Nlog(N(,我哪里出错了?
无处可去,O(log n!) == O(n log n)
.证明是一点数学。
首先,我们有log(n!) = log(1) + log(2) + ... + log(n) <= log(n) + log(n) + ... + log(n) = n log(n)
.另一方面,我们还得到以下内容
2 log(n!) = 2*(log(1) + log(2) + ... + log(n))
= (log(1) + log(n)) + (log(2) + log(n-1)) + ... + (log(i) + log(n-i+1)) + ... + (log(n) + log(1))
= log(1*n) + log(2*(n-1)) + ... + log(i*(n-i+1)) + ... log(n*1)
>= log(n) + ... + log(n) = n log(n)
自i*(n-i+1) = i*n - i*i + i >= n
年以来,我们得到了不平等(似乎有点神秘,但它基本上是说产品增长快于总和(。
所以我们有log(n!) <= n log(n) <= 2 log(n!)
.通过O表示法的定义,这意味着O(log(n!)) = O(n log(n))
。
相关文章:
- while循环中while循环的时间复杂度是多少
- 函数的时间复杂度是多少?
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 给定C++代码的时间复杂度是多少?
- 将数组的元素插入映射的时间复杂度是多少?
- 以下递归代码的时间复杂度是多少?
- 在C++中修改字符串的BigO时间复杂度是多少
- 这个算法的运行时间复杂度是多少?你是如何分析的
- 此特定代码的时间复杂度是多少?
- % 运算符的时间复杂度C++是多少?
- 三和算法的时间复杂度是多少
- 以下代码片段的时间复杂度是多少?
- 用于搜索的给定代码的时间复杂度是多少
- std::map的时间复杂度是多少
- 遍历二维数组的时间复杂度是多少
- 这个代码(来自leetcode)的时间复杂度是多少
- 以下代码的时间复杂度是多少
- 这个算法的时间复杂度是多少
- 以下循环的时间复杂度是多少
- 一个清晰的函数的时间复杂度是多少,根据大 O,是 std::map