●在有11个元素的有序数组a[1..11]中进行二分查找(即折半查找),依次与(37)
比较后,成功找到元素a[5]。
(37)
A.a[6]、a[2]、a[5]
B.a[6]、a[4]、a[5]
C.a[6]、a[3]、a[4]、a[5]
D.a[6]、a[8]、a[4]、a[5]
第四题 阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。 【说明】 当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。【C函数1】 int biSearch(int r[],int low,int high,int key) //r[low..high] 中的元素按非递减顺序排列 //用二分查找法在数组r中查找与key相同的元素 //若找到则返回该元素在数组r的下标,否则返回-1 {int mid;while((1)) {mid = (low+high)/2 ;if (key ==r[mid])return mid;else if (key (2);else(3);}/*while*/return -1; }/*biSearch*/【C 函数 2】 int biSearch_rec(int r[],int low,int high,int key) //r[low..high]中的元素按非递减顺序排列 //用二分查找法在数组r中查找与key相同的元素 //若找到则返回该元素在数组r的下标,否则返回-1 {int mid;if((4)) {mid = (low+high)/2 ;if (key ==r[mid])return mid;else if (key return biSearch_rec((5),key);elsereturn biSearch_rec((6),key);}/*if*/return -1; }/*biSearch_rec*/ 问题:4.1 (12分) 请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。 问题:4.2 (3分) 若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。 (7)备选答案: A.[log2(n+1)] B.[n/2] C.n-1 D.n
点击查看答案
在有11个元素的有序表A[1.11]中进行折半查找,查找元素A[11]时,被比较的元素的下标依次是()。A.6,8,10,11 B.6,9,10,11 C.6,7,9,11 D.6,8,9,11
在55个互异元素构成的有序表A[1..55]中进行折半查找(或二分查找,向下取整)。若需查找的元素等于A[19],则在查找过程中参与比较的元素依次为( )A.A[28]、A[30]、A[15]、A[20] B.A[28]、A[14]、A[21]、A[17] C.A[28]、A[15]、A[22]、A[18] D.A[28]、A[18]、A[22]、A[20]
某一维数组中依次存放了数据元素15,23,38,47,55,62,88,95,102,123,采用折半(二分)法查找元素95时,依次与( )进行了比较。A.62,88,95 B.62,95 C.55,88,95 D.55,95
在55个互异元素构成的有序表A[1..55]中进行折半查找(或二分查找,向下取整)。若需要找的元素等于A[19],则在查找过程中参与比较的元素依次为( )、A[19]。A.A[28]、A[30]、A[15]、A[20] B.A[28]、A[14]、A[21]、A[17] C.A[28]、A[15]、A[22]、A[18] D.A[28]、A[18]、A[22]、A[20]
在12个互异元素构成的有序数组 a[1..12] 中进行二分查找(即折半查找,向下取 整),若待查找的元素正好等于a[9],则在此过程中,依次与数组中的( )比较后,查找成功结束。 A.a[6]、 a[7]、 a[8]、 a[9] B.a[6]、a[9] C. a[6]、 a[7]、 a[9] D.a[6]、 a[8]、 a[9]
设有序列{10,12,15,19,22,25,100,130,150,200}画出对上述序列进行折半查找的判定树(以序列中的元素作为树的结点)。为了成功查找到100需要进行多少次元素间的比较?为了查找9,经过多少次元素间的比较可知道查找失败?