我正在研究N元素中的二元搜索,三元搜索和k元搜索的时间复杂度,并且已经提出了它各自的渐近最坏情况运行时间。但是,我开始想知道如果我将N个元素分成n个范围(或者n个n元素中的n元搜索)会发生什么。这是一个数组中的排序线性搜索,它会导致O(N)的运行时间?这有点令人困惑。请帮帮我!
答案 0 :(得分:0)
你说的是对的。
对于k-ary
搜索,我们有:
k-1
检查边界以隔离其中一个k
范围。因此,时间复杂度基本上为O((k-1)*log_k(N))
,其中log_k(N)
表示“log(N)
到基础k
”。这个时间最短为k=2
。
如果k = N
,则时间复杂度为:O((N-1) * log_N(N))
= O(N-1)
= O(N)
,这与线性搜索在算法和复杂性方面相同。
转换为上述算法,它是:
N-1
检查边界(每个第一个N-1
元素)以隔离其中一个N
范围。这与第一个N-1
元素中的线性搜索相同。