例题1
求下面的算法的和:
-1,1,-1...(-1)^n
怎么利用代码写出来?
这个问题对我有点困惑,因为我以前的知识点的忘记还是存在的所以我先利用数学思维想了一下概括了两个内容
(1)这个n个项的数目不会变,这样会有两个情况,第一个所有的项的和是偶数或奇数,如果偶数那么sum=0;如果是奇数sum=-1;
(2)如果这个n个项的数目不确定的情况下有这样的情况sum=0+(-1)^n,这样的情况下我们把n分两个情况,第一个偶数,另一个就是奇数然后得出答案.
书上的代码例题是如下:
sum=0;
for(i=1;i<=n;i++)
{ sum=sim+(-1)^n; }
代码二:
if(n%2==0)//判断n的偶奇数
sum=0;//偶数的情况
else sum=-1;//奇数情况
算法:有穷性,可行性,确定性,输入输出//这是算法的基本
好算法的标准: 正确性,易读性,健壮性,高效性,低储存性
判断标准的就是高效性,低储存.
判断运行次数时:
T(n)=2n^2+2n+2
极限T(n)/f(n)=c,c!=0,c为不等于0的常数
还有一个情况就是运行次数不确定性:
如n=不确定,这个程序即2^x=n时结束,则x=log2^n
那么运算次数为1+2log2^n
注意::不是每一个算法都能直接计算运行次数
如1-5例题
在a[n]数组中顺序查找x,返回值其下标i,如果没有找到,则返回值-1;
findx(int x)//在a[i]中查找x
{ for(i=0;i<n;i++)
{ if(a[i]=x)
return i;}//返回值其i
return -1; }
在最坏的情况对衡量算法的好坏具有实际意义.
我这个最坏的情况有点不理解
空间复杂度:算法占用的空间的大小.一般将算法的辅助空间作为衡量复杂度的标准.
1)输入/输出数据
2)算法本身
3)额外需要的辅助空间
空间可以精确的算法来减少占用空间,如果空间极小忽略不计.
个人理解辅助空间就是:两个数字的交换==辅助空间
注意:递归算法中,每一种,每一次递推需要一个栈空间来保存调用记录,因此,空间复杂程度需要计算递栈的辅助空间,
递归问题不太理解,所以没有办法写出笔记了
还有就是后面的问题我有点看不懂希望你帮我一下.
浙公网安备 33010602011771号