参考答案和解析
正确答案:D
解析:二分查找亦称折半查找,其基本思想:设查找表的元素存储在一维数组r[1..n]中,首先将待查的key值与表r中间位置上(下标为mid)的记录的关键字进行比较,若相等,则查找成功:若key>r[mid].key,则说明待查记录只可能在后半个子表r[mid+1..n](注意:是mid+1,而不是mid)中,下一步应在后半个子表中再进行折半查找,若keyr[mid].key,则说明待查记录只可能在前半个子表r[1..mid-1](注意:是mid-1,而不是mid)中,下一步应在前半个子表中再进行折半查找,这样通过逐步缩小范围,直到查找成功或予表为空时失败为止。
  在表中的元素已经按关键字递增(或递减)的方式排序的情况下,才可进行折半查找。
  等概率情况下顺序查找成功的平均查找长度为:当n值较大时,ASLbs≈log2(n+1)-1。
更多“用递归算法实现n个相异元素构成的有序序列的二分查找,采用一个递归工作栈时,该栈的最小容量应为_ ”相关问题
  • 第1题:

    对具有n个元素的有序序列进行二分查找时,(40)。

    A.查找元素所需的比较次数与元素的位置无关

    B.查找序列中任何一个元素所需要的比较次数不超过[log2(n+1)]

    C.元素位置越靠近序列后端,查找该元素所需的比较次数越少

    D.元素位置越靠近序列前端,查找该元素所需的比较次数越少


    正确答案:B
    解析:本题考查查找方法中的二分方法。二分查找过程是:以处于中间位置记录的关键字和给定值比较,若相等,则查找成功;若不等,则缩小范围,直至新的区间中间位置记录的关键字等于给定值或查找区间的大小为零时(表明查找不成功)为止。对于有11个元素的有序表进行二分查找的过程可用一个二叉树表示,如下所示(结点中的数字表示元素在序列中的序号):

    该二叉树表明,若需要查找序列中的第6个元素,则仅需一次元素间的比较。若需查找第3个或第9个元素,则分别需要两次比较。依此类推,查找第1、4、7、10个元素时,分别需要三次比较,查找第2、5、8、11个元素时,分别需要四次比较。因此,查找元素所需的比较次数与元素在序列中的位置是有关的。显然,选项C或D的说法也是错误的。若序列中有n个元素,则根据二分查找法构造的二叉树的高度不会超过[log2(n+1)],因此选项B是正确的。

  • 第2题:

    系统需设立一个递归工作栈作为整个递归函数运行期间使用的数据存储区。每层递归所需信息构成一个()。


  • 第3题:

    用代码实现二分法查找的递归算法(以数组存储元素)


    public static int binarySearch(int[] value, int key, int begin, int end) { if (begin<=end) { int mid = (begin+end)/2; if (value[mid]==key) return mid; if (key < value[mid]) return binarySearch(value, key, begin, mid-1); return binarySearch(value, key, mid+1, end); } return -1; }

  • 第4题:

    用递归算法实现n个相异元素构成的有序序列的二分查找,采用一个递归工作栈时,该栈的最小容量应为()。


    答案:D
    解析:

  • 第5题:

    4、系统需设立一个递归工作栈作为整个递归函数运行期间使用的数据存储区。每层递归所需信息构成一个()。


    B