算法设计与分析学习笔记与习题1

算法是有限条操作指令的集合,这些指令确定了解决问题的方法与步骤。能够对符合一定规范的输入,在有限时间内获得所要求的输出。

求两个正整数的最大公因子

在这里插入图片描述
算法思想:E(m,n)
第一步:求余数 ==r= m mod n==;
第二步:判断 若 r = 0 算法结束,n即为所求;否则进入第三步。
第三步:赋值 ==m=n,n=r==;返回第一步
解释:由于m,n与余数r之间有关系式:==m=q*n+r (r<n)==
其中q为商,则计算 m与n的最大公约数可以转换成计算 n与r的最大公约数;因为m与n的最大公约数比能整除r;反之,n和r的最大公约数必能整除m。
伪代码:

算法:GCD(m,n)
    /*使用欧几里得算法计算m,n的最大公约数*/
    /*输入:两个正整数m,n*/
    /*输出:m,n的最大公约数*/
begin
    while n!=0 do
    begin
        r=m mod n;
        m=n;
        n=r;
    end;
    return n;
end

写出将十进制正整数转换为二进制正整数的标准算法

算法思路:任何一个正整数都可以用2的幂次方表示,例如,137=2^7^ + 2^3^ + 2^0^,所以将正整数每次%2 就能得到当前位置上的2进制数。
输入:一个正整数n
输出:正整数n相应的二进制数
第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n 
第二步:如果n=0,则到第三步,否则重复第一步 
第三步:将Ki按照i从高到低的顺序输出
伪代码实现:

Algorithm DectoBin(n)
Begin
    i =n;
      j =0;
      while  (i != 0)  do
          i = i/2;
          B[j]=i%2;
          j =j+1;
      end;
      while (j > 0) do
        j =j-1;
        Print B[j];
    end;
end

证明关于下列n个顶点二叉树高度的不等式:⌊logn⌋<=h<=n-1

首先证明不等式的右边:
当二叉树的每层只有一个节点的时达到最大高度n-1,所以二叉树的高度h ≤ n-1;
不等式左边的证明:
对任意一个高度为h的二叉树,节点数最多时为满二叉,而高度为h的满二叉树的节点数为
2^(h+1)^-1,对任意高度为h的二叉树,其节点数一定小与等于2^(h+1)^-1, 即n<=2^(h+1)^-1 -->⌊log⁡n⌋<=⌊log⁡(2^(h+1)^-1)⌋, 而⌊log⁡⁡(2^(h+1)^-1)⌋=h
故⌊log⁡n⌋<=h

全部评论

相关推荐

09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务