2011年山西省数据库入门入门
1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为O(m+n),因此不能采用常规的二层循环的查找。可以先从右上角(i=a,j=d)元素与x比较,只有三种情况:一是A[i,j]>x, 这情况下向j 小的方向继续查找;二是A[i,j]<x,下步应向i大的方向查找;三是A[i,j]=x,查找成功。否则,若下标已超出范围,则查找失败。
void search(datatype A[ ][ ], int a,b,c,d, datatype x)
//n*m矩阵A,行下标从a到b,列下标从c到d,本算法查找x是否在矩阵A中.
{i=a; j=d; flag=0; //flag是成功查到x的标志
while(i<=b && j>=c)
if(A[i][j]==x) {flag=1;break;}
else if (A[i][j]>x) j--; else i++;
if(flag) printf(“A[%d][%d]=%d”,i,j,x); //假定x为整型.
else printf(“矩阵A中无%d 元素”,x);
}算法search结束。
[算法讨论]算法中查找x的路线从右上角开始,向下(当x>A[i,j])或向左(当x<A[i,j])。向下最多是m,向左最多是n。最佳情况是在右上角比较一次成功,最差是在左下角(A[b,c]),比较m+n次,故算法最差时间复杂度是O(m+n)。
2、设一棵二叉树的结点结构为 (LLINK,INFO,RLINK),ROOT为指向该二叉树根结点的指针,p和q分别为指向该二叉树中任意两个结点的指针,试编写一算法ANCESTOR(ROOT,p,q,r),该算法找到p和q的最近共同祖先结点r。
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<m && j>=0)
if(a[i]<b[j]) c[k++]=a[i++] else c[k++]=b[j--];
while(i<m) c[k++]=a[i++];
while(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);
2011年山西省数据库入门入门_韩语学习_外语学习_教育专区。2011年山西省数据库入门入门 1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为O(m+n),因此不...
2011年山西省数据库入门入门_韩语学习_外语学习_教育专区。2011年山西省数据库入门入门 1、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={<V1...
2011年山西省数据库入门入门_韩语学习_外语学习_教育专区。2011年山西省数据库入门入门 1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为 O(m+n) ,因此...
2011年山西省数据库入门入门_韩语学习_外语学习_教育专区。2011年山西省数据库入门入门 1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为 O(m+n) ,因此...
2011年山西省数据库入门基础_韩语学习_外语学习_教育专区。2011年山西省数据库入门基础 1、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一...
2011年山西省数据库入门基础_韩语学习_外语学习_教育专区。2011年山西省数据库入门基础 1、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一...
2011年山西省数据库入门基础_韩语学习_外语学习_教育专区。2011年山西省数据库入门基础 1、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一...
2011年山西省数据库入门基础_韩语学习_外语学习_教育专区。2011年山西省数据库入门基础 1、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历...
2011年山西省数据库入门大纲_韩语学习_外语学习_教育专区。2011年山西省数据库入门大纲 1、设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B...
2011山西省数据库入门高级_韩语学习_外语学习_教育专区。2011山西省数据库入门高级 1、题目中要求矩阵两行元素的平均值按递增顺序排序,由于每行元素个数相等,按平均...
2011山西省数据库入门深入_韩语学习_外语学习_教育专区。2011山西省数据库入门深入 1、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。 29. ① ...
2010年山西省数据库入门入门_韩语学习_外语学习_教育专区。2010年山西省数据库入门入门 1、矩阵中元素按行和按列都已排序,要求查找时间复杂度为 O(m+n) ,因此...

我要评论