算法设计与分析学习笔记与习题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=27 + 23 + 20,所以将正整数每次%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


版权声明:本文为weixin_44216820原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。