将数组的元素插入映射的时间复杂度是多少?

What is the time complexity of inserting elements of an array into a map?

本文关键字:多少 时间复杂度 插入 数组 元素 映射      更新时间:2023-10-16

如果在映射中插入元素需要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))