类比二分搜索算法,设计k分搜索算法(k为大于2的整数)如下:首先检查n/k处(n为被搜索集合的元素个数)的元素是否等于要搜索的值,然后检查2n/k处的元素,……,这样,或者找到要搜索的元素,或者把集合缩小到原来的1/k;如果未找到要搜索的元素,则继续在得到的集合上进行k分搜索;如此进行,直到找到要搜索的元素或搜索失败。此k分搜索算法在最坏情况下搜索成功的时间复杂度为(57),在最好情况下搜索失败的时间复杂度为(58)。A.O(logn)B.O(nlogn)C.O(logkn)D.O(nlogkn)

题目

类比二分搜索算法,设计k分搜索算法(k为大于2的整数)如下:首先检查n/k处(n为被搜索集合的元素个数)的元素是否等于要搜索的值,然后检查2n/k处的元素,……,这样,或者找到要搜索的元素,或者把集合缩小到原来的1/k;如果未找到要搜索的元素,则继续在得到的集合上进行k分搜索;如此进行,直到找到要搜索的元素或搜索失败。此k分搜索算法在最坏情况下搜索成功的时间复杂度为(57),在最好情况下搜索失败的时间复杂度为(58)。

A.O(logn)

B.O(nlogn)

C.O(logkn)

D.O(nlogkn)


相似考题
更多“类比二分搜索算法,设计k分搜索算法(k为大于2的整数)如下:首先检查n/k处(n为被搜索集合的元素个数 ”相关问题
  • 第1题:

    下面算法是实现对n个整数的序列进行选择排序,其中序列的“长度”n为问题的规模。该算法的时间复杂度为(11)。 void select_sort(int a[],int n){ //将a中整数序列重新排列成从小到大有序的整数序列 for(i=0;i<n-1;++i){ j=i; for(k=i+1;k<n;++k)if(a[k]<a[j])j=k; if(j!=i){w=a[j];a[j];a[i];a[i]=w} )//select_sort

    A.O(n2)

    B.O(n3)

    C.O(n4)

    D.O(n)


    正确答案:A
    解析:算法中的控制结构是两重循环,所以基本操作是在内层循环中的“比较”,它的重复执行次数是:对时间复杂度而言,只需要取最高项,并忽略常数系数。

  • 第2题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明]

    函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。

    [C函数]

    int psort(int a[],int n)

    {int i,J,k,P;

    for(i=0,k=0;i<(1);i++){

    for(j=i+1, (2) ;j<n; j++)

    if(a[p]>a[j])

    p=j;

    if(p!=i){

    t=a[p];

    a[p]=a[i];

    a[i]=t;

    }

    if( (3) ) k++;

    else if( (4) <a[i])

    (5)=a[i];

    }

    return k;

    }

    int a[]={5,7,5,6,4,3,4,6,7};

    main()

    {int k,n;

    for(k=0;k<(Sizeof a)/Sizeof(int);k++)

    printf("%5d",a[k]);

    printf ("\n\n");

    n=psort(a,(sizeof(a))/sizeof(int));

    for(k=0;k<n;k++)

    printf("%5d",a[k]);

    printf("\n\n");

    }


    正确答案:(1) n-1 (2) P=i (3) k==0 (4) a[k-1] (5) a[k++]
    (1) n-1 (2) P=i (3) k==0 (4) a[k-1] (5) a[k++] 解析:本程序排序方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。这是采用选择法对数组元素进行排序,因此空(1)填“n-1”,空(2)填“p=i”。若该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。因此,空(3)填“k==0”;而当a[k-1]a[i]时”,则a[k++]=a[i];否则忽略元素a[i]。所以空(4)填“a[k-1]”空(5)填“a[k++]”。

  • 第3题:

    以下子例行程序用于实现向一维数组下标为P的数组元素处插入一个整数X
    SUBROUTINE INSERT(B,N,P,X)
    INTEGER B(N),X,P
    DO 20 K=N-1,P,-1
    B(K+1)=______
    20 CONTINUE
    B(P)=X
    END
    为使程序完整,应在______处放入( )。

    A.X
    B.K
    C.B.(P)
    D.B.(K)

    答案:D
    解析:

  • 第4题:

    在多元线性回归模型中对样本容量的基本要求是(k为解释变量个数):( )

    A.n≥k+1
    B.n<k+1
    C.n≥30或n≥3(k+1)
    D.n≥30

    答案:C
    解析:

  • 第5题:

    若一个栈初始为空,其输入序列是1,2,3,…,n-1,n,其输出序列的第一个元素为k(1≤k≤「n/2」),则输出序列的最后一个元素是()。

    • A、值为n的元素
    • B、值为1的元素
    • C、值为n-k的元素
    • D、不确定的

    正确答案:D

  • 第6题:

    利用评价函数f(n)=g(n)+h(n)来排列OPEN表节点顺序的图搜索算法称为()

    • A、深度优先算法
    • B、宽度优先算法
    • C、盲搜索算法
    • D、A算法

    正确答案:D

  • 第7题:

    对总例数为N的k个处理组的完全随机设计方差分析,其组间的自由度为()

    • A、N-1
    • B、N-2
    • C、k-1
    • D、k-2
    • E、N-k

    正确答案:C

  • 第8题:

    在搜索解图的过程中,若解图的耗散值记为k(n,N),则若n是N的一个元素,则k(n,N)=()

    • A、n
    • B、N
    • C、N-n
    • D、0

    正确答案:D

  • 第9题:

    使用二分搜索算法在n个有序元素表中搜索一个特定元素,在最佳情况下,搜索的时间复杂性为O(),在最坏情况下,搜索的时间复杂性为O()。


    正确答案:1;logn

  • 第10题:

    速度传感器的计算公式应该为以下哪种,单位为r/min()。

    • A、V=60×N/K(N为每秒钟的计数个数,K为标记的数量或者齿轮的个数)
    • B、V=N/(60K)
    • C、V=60×K/N
    • D、V=K/(60N)

    正确答案:A

  • 第11题:

    填空题
    使用二分搜索算法在n个有序元素表中搜索一个特定元素,在最佳情况下,搜索的时间复杂性为O(),在最坏情况下,搜索的时间复杂性为O()。

    正确答案: 1,logn
    解析: 暂无解析

  • 第12题:

    问答题
    给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。

    正确答案: 我们把这种算法叫做快速选择(quickselect)。令〡Si〡为Si中元素的个数,快速选择的步骤如下:
    1)如果〡S〡=1,那么k=1并将S中的元素作为答案返回。如果正在使用小数组的截止方法且〡S〡≤CUTOFF,则将S排序并返回第k个最小元。
    2)选取一个枢纽元v∈S。
    3)将集合S-{v}分割成S1和S2,就像快速排序中所做的那样。
    4)如果k≤〡S1〡,那么第K个最小元必然在S1中。在这种情况下,返回quickselect(S1,k),如果k=1+〡S1
    ,那么枢纽元就是第k个最小元,将它最为答案返回。否则,第k个最小元就在S2中,他是S2中的第(k-〡S1〡-1)个最小元。我们进行一次递归调用并返回quickselect(S2,k-〡S1〡-1)。
    与快速排序对比,快速选择只进行了一次递归调用而不是两次。快速选择的最坏情形和快速排序的相同,也就是O(N=2)。直观看来,这是因为快速排序的最坏情形发生在S1和S2有一个是空的时候;于是,快速选择也就不是真的节省一次递归调用。不过平均运行时间是O(N)。具体分析类似快速排序的分析。
    快速排序的实现甚至比抽象描述还要简单,当算法终止时,第k个最小元就在位置k-1上(因为数组开始于下标0)。这破坏了原来的排序;如果不希望这样,那么需要做一份拷贝。
    解析: 暂无解析

  • 第13题:

    某树共有n个结点,其中所有分支结点的度为k(即每个非叶子结点的子树数目),则该树中叶子结点的个数为()

    A、(n(k+1)-1)/k

    B、(n(k+1)+1)/k

    C、(n(k-1)+1)/k

    D、(n(k-1)-1)/k


    正确答案:C

  • 第14题:

    下面是一个对整数数组A中的前n个元素求最小值的C程序,函数返回最小元素的位置。 Int minValue(int A[],int n){ int k=0: for(int j=1;j<=n-1;j++) if(A[j]<a[k])k=j; return k: 当n=4时,程序中可能的执行路径数为______。

    A.2

    B.4

    C.8

    D.16


    正确答案:B
    解析:当N=4时,程序中的循环一共执行三次,这样就有三个判定结点,所以需要四个基本的测试用例。

  • 第15题:

    对总例数为N的k个处理组的完全随机设计方差分析,其组间的自由度为

    A.N-1
    B.N-2
    C.k-1
    D.k-2
    E.N-k

    答案:C
    解析:

  • 第16题:

    某树共有n个结点,其中所有分支结点的度为k(即每个非叶子结点的子树数目),则该树中叶子结点的个数为()

    A.(n(k+1)-1)/k
    B.(n(k+1)+1)/k?
    C.(n(k-1)+1)/k
    D.(n(k-1)-1)/k?

    答案:C
    解析:
    任意画一棵树,再带入四个选项,符合要求的是选项C。

  • 第17题:

    设N1﹑N2分别为滚刀﹑工件每分钟转数,K﹑Z分别为滚刀﹑工件齿数,则滚齿的分齿运动式为()。

    • A、A﹑N1/N2=K/Z
    • B、B﹑N1*N2=K*Z
    • C、C﹑N2/N1=K/Z
    • D、D﹑N1/N2=K*Z

    正确答案:C

  • 第18题:

    使用二分搜索算法在1000个有序元素表中搜索一个特定元素,在最坏情况下,搜索总共需要比较的次数为()

    • A、10
    • B、11
    • C、500
    • D、1000

    正确答案:A

  • 第19题:

    二分搜索算法是利用()实现的算法。


    正确答案:动态规划法

  • 第20题:

    在索引查找中,若用于保存数据元素的主表的长度为n,它被均分为k个子表,每个子表的长度均为n/k,则索引查找的平均查找长度为()。

    • A、 n+k
    • B、 k+n/k
    • C、 (k+n/k)/2
    • D、 (k+n/k)/2+1

    正确答案:D

  • 第21题:

    给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。


    正确答案: 我们把这种算法叫做快速选择(quickselect)。令〡Si〡为Si中元素的个数,快速选择的步骤如下:
    1)如果〡S〡=1,那么k=1并将S中的元素作为答案返回。如果正在使用小数组的截止方法且〡S〡≤CUTOFF,则将S排序并返回第k个最小元。
    2)选取一个枢纽元v∈S。
    3)将集合S-{v}分割成S1和S2,就像快速排序中所做的那样。
    4)如果k≤〡S1〡,那么第K个最小元必然在S1中。在这种情况下,返回quickselect(S1,k),如果k=1+〡S1
    ,那么枢纽元就是第k个最小元,将它最为答案返回。否则,第k个最小元就在S2中,他是S2中的第(k-〡S1〡-1)个最小元。我们进行一次递归调用并返回quickselect(S2,k-〡S1〡-1)。
    与快速排序对比,快速选择只进行了一次递归调用而不是两次。快速选择的最坏情形和快速排序的相同,也就是O(N=2)。直观看来,这是因为快速排序的最坏情形发生在S1和S2有一个是空的时候;于是,快速选择也就不是真的节省一次递归调用。不过平均运行时间是O(N)。具体分析类似快速排序的分析。
    快速排序的实现甚至比抽象描述还要简单,当算法终止时,第k个最小元就在位置k-1上(因为数组开始于下标0)。这破坏了原来的排序;如果不希望这样,那么需要做一份拷贝。

  • 第22题:

    填空题
    二分搜索算法是利用()实现的算法。

    正确答案: 动态规划法
    解析: 暂无解析

  • 第23题:

    单选题
    利用评价函数f(n)=g(n)+h(n)来排列OPEN表节点顺序的图搜索算法称为()
    A

    深度优先算法

    B

    宽度优先算法

    C

    盲搜索算法

    D

    A算法


    正确答案: A
    解析: 暂无解析