n-ary搜索的时间复杂度。

时间:2015-11-16 02:58:38

标签: algorithm time-complexity binary-search

我正在研究N元素中的二元搜索,三元搜索和k元搜索的时间复杂度,并且已经提出了它各自的渐近最坏情况运行时间。但是,我开始想知道如果我将N个元素分成n个范围(或者n个n元素中的n元搜索)会发生什么。这是一个数组中的排序线性搜索,它会导致O(N)的运行时间?这有点令人困惑。请帮帮我!

1 个答案:

答案 0 :(得分:0)

你说的是对的。

对于k-ary搜索,我们有:

  1. k-1检查边界以隔离其中一个k范围。
  2. 跳到从上面获得的范围。
  3. 因此,时间复杂度基本上为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),这与线性搜索在算法和复杂性方面相同。

    转换为上述算法,它是:

    1. N-1检查边界(每个第一个N-1元素)以隔离其中一个N范围。这与第一个N-1元素中的线性搜索相同。
    2. 跳到从上面获得的范围。这与检查最后一个元素(在恒定时间内)相同。