1、给出折半查找的递归算法,并给出算法时间复杂度性分析。
2、设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。
3、数组a和b的元素分别有序,欲将两数组合并到c数组,使c仍有序,应将a和b拷贝到c,只要注意a和b数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到c中即可。
void union(int a,b,c,m,n)
/整型数组a和b各有m和n个元素,前者递增有序,后者递减有序,本算法将a和b归并为递增有序的数组c。
i=0; j=n-1; k=0;//i,j,k分别是数组a,b和c的下标,因用c描述,下标从0开始while(i=0)
if(a[i]while(iwhile(j>=0) c[k++]b[j--]
算法结束。4、要求二叉树按二叉链表形式存储。15分。
1)写一个建立二叉树的算法。(2)写一个判别给定的二叉树是否是完全二叉树的算法。bitree creat建立二叉树的二叉链表形式的存储结构。
elemtype x;bitree bt;
scanf(“%d”,&x); 本题假定结点数据域为整型。
if(x==0) bt=null;
else if(x>0)
bt=(binode *)malloc(sizeof(binode));
bt->data=x; bt->lchild=creat();bt->rchild=creat();
else error(“输入错误”);
return(bt);
//结束 bitree
int judgecomplete(bitree bt) /判断二叉树是否是完全二叉树,如是,返回1,否则,返回0
int tag=0; bitree p=bt, q;q是队列,元素是二叉树结点指针,容量足够大。
if(p==null) return (1);
queueinit(q); queuein(q,p); 初始化队列,根结点指针入队。
while (!queueempty(q))
p=queueout(q出队。
if (p->lchild &&tag) queuein(q,p->lchild); 左子女入队。
else /judgecomplete
4、设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二。
分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。
2023年山西省数据总结基础
if for i free p 释放p数组。translation 算法分析 算法中使用选择法排序,比较次数较多,但数据交换 移动 较少。若用其它排序方法,虽可减少比较次数,但数据移动会增多。算法时间复杂度为o n2 2 矩阵中元素按行和按列都已排序,要求查找时间复杂度为o m n 因此不能采用常规...
2023年山西省重要数据加强
typedef struct 沿左分枝向下。if bt p 不失一般性,假定p在q的左侧,遇结点p时,栈中元素均为p的祖先结点。for i 1 i top i s1 i s i top1 top 将栈s的元素转入辅助栈s1 保存。if bt q 找到q 结点。for i top i 0 i 将栈中元...
2019山西省暑期
2012山西省暑期 园丁之家 活动之感受。今年暑期,我有幸参加了由山西省教育 会组织的 园丁之家 活动。虽然只有短短的七天时间,但对于我可以说是满载而归,终身受益。8月5日下午我带着淡淡的忧虑踏上了去太原的列车,第一次一个人单独出门,害怕和孤独包围了我。但当我到达接待地址后,我的忧虑和孤独荡然无存。...