更多"用递归算法实现n个相异元素构成的有序序列的二分查找,采用一个递归工作栈"的相关试题:
[简答题]设顺序表中的数据元素递增有序,编写一算法将元素X插入到顺序表的适当位置上,并保证该表的有序性。
[填空题]以下算法在有序表R中用二分查找法查找键值等于K的元素,请分析程序,并在______上填充合适的语句。
int binsearch(sqtable R,keytype K)
{ low=l;hig=R.n;/*置查找区间初值。low,hig分别标记查找区间的下、上界*/
while(low<=hig)
{ mid=(low+hig)/2;
switch
{ case K==R.item[i].key:return(mid); /*找到,返回位置mid*/
case K<R.item[i].key:______.break;/*缩小区间*/
case K>R.item[i].key:______;break/*缩小区间*/
}
}
return(0); /*若区间长度已为0但仍不成功,则返回0,表示查找不成功*/
}
[单项选择]将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是 (28) 。
A. n-1
B. n
C. 2n-1
D. 2n
[简答题]
已知用有序链表存储整数集合的元素。阅读算法。f30,并回答下列问题:
(1)写出执行f30(a,b)的返回值,其中a和b分别为指向存储集合{2,4,5,7,9,12}和{2,4,5,7,9}的链表的头指针;
(2)简述算法f30的功能;
(3)写出算法f30的时间复杂度。
int f30(LinkList ha,LinkList hb)
{
//LinkList是带有头结点的单链表
//ha和hb分别为指向存储两个有序整数集合的链表的头指针
LinkList pa,pb;
pa=ha—>next;
pb=hb—>next;
while(pa&&pb&&pa—>data==pb—>data)
{ pa=pa—>next;
pb=pb—>next;
}
if(pa==NULL&&pb==NULL)return 1;
else return 0;
}
(1)
[单项选择]对有17个元素的有序表A[1...17]作二分查找,在查找其等于A[8]的元素时,被比较的元素的下标依次是()。
A. 9,4,6,7,8
B. 9,5,7,8
C. 9,5,6,7,8
D. 9,5,4,6,7,8
[简答题]设顺序表L是一个递增有序表。编写算法,要求利用二分查找法确定插入位置,将元素x插入到L中,使L保持有序。
[单项选择]给定一个有n个元素的有序线性表。若采用顺序存储结构,则在等概率前提下,删除其中的一个元素平均需要移动()个元素。
A. (n+1)/2
B. n/2
C. (n-1)/2
D. 1
[填空题]将两个长度分别为m和n的递增有序单链表,归并成一个按元素递减有序的单链表,可能达到的最好的时问复杂度是______。
[多项选择]一级市场由( )三个元素构成。
A. 证券印制者
B. 证券发行者
C. 证券承销商
D. 证券公募者
E. 证券投资者
[单项选择]对有14个数据元素的有序表R-14]进行二分法查找,查找到R[3]的关键码等于给定值,此时元素比较顺序依次为()
A. R[0],R[1],R[2],R[3]
B. R[0],R[13],R[2],R[3]
C. R[6],R[2].R[4],R[3]
D. R[6],R[4],R[2],R[3]
[单项选择]对有14个数据元素的有序表R[14]进行折半搜索,搜索到R[3]的关键码等于给定值,此时元素比较顺序依次为( )。
A. R[0],R[1],R[2],R[3]
B. R[0],R[13],R[2],R[3]
C. R[6],R[2],R[4],R[3]
D. R[6],R[4],R[4],R[3]
[单项选择]在11个元素的有序表A[1…11)中进行折半查找[L(low+high)/2],查找元素A[11]时,被比较的元素的下标依次是()。
A. 6,8,10,11
B. 6,9,10,11
C. 6,7,9,11
D. 6,8,9,11