知识大全 数据结构考研分类复习真题 第五章 答案[35]
Posted 知
篇首语:用行动祈祷比用言语更能够使上帝了解。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第五章 答案[35]相关的知识,希望对你有一定的参考价值。
.[题目分析]矩阵中元素按行和按列都已排序 要求查找时间复杂度为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= ; //flag是成功查到x的标志 while(i<=b && j>=c) if(A[i][j]==x) flag= ;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)
cha138/Article/program/sjjg/201311/23044相关参考
第五章 数组和广义表答案 一选择题 BLJCICBBAHCEAFBEABBBBBABBACDCDFCDCACA 二判断题 ×√√×××√××××√√√ 部分答案解释如下 错误
.这是一个递归调用问题运行结果为DBHEAIFJCKGL ()FOR循环中每次执行PerfectShuffle(AN)和CompareExchange(AN)的结果 第次A[]=[] A[]
.() () ()i=j=即A[]  
()略 ()求广义表原子个数的递归模型如下 f(p)= PROCNumber(p:glist;VARn:integer) VARm:integer; n:=; IFp<>N
深度为长度为 ()略 ()表的长度为深度为 ()head(tail(head(head(head(tail(tail(tail(tail(A))))))))) 共享结构广义表A=(((bc
Head(Tail(Head(Head(L)))) Head(Head(Head(Tail(Head(Tail(L)))))) 类似本题的另外叙述的几个题解答如下 ()head(head(t
head(tail(head(tail(H)))) (b) (xyz) (de) GetHead(GetHead(GetTail(L))) 本算法中首先数组b中元素以逆置顺序放入d数组中
.每个元素个二进制位主存字长位故每个元素占个字长行下标可平移至到 () () ()s+ ()s+ . 公式 +L(
.错误有以下几处 ()过程参数没有类型说明()出错条件判断缺少OR(i+k>last+) ()删除元素时FOR循环应正向不应用反向DOWNTO()count没定义 低效体现在两处 (
公式LOC(aijk)=LOC(a)+[v*v*(ic)+v*(jc)+(kc)]*l(l为每个元素所占单元数) 第行第列 ()()() i(i)/+j(<=ij<