最简单易懂的C++笔记分享 Day 19
Posted 西京数据分析与商业智能
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最简单易懂的C++笔记分享 Day 19相关的知识,希望对你有一定的参考价值。
之前十多天我们对C++的语法做了简单介绍,从今天开始我们将结合算法从具体问题中应用这些知识,话不多说我们开始吧。
算法一般可以分为两大类:数值运算算法和非数值运算算法。前者主要解决数学问题,如一些求和,算积分之类的;后者主要解决一些逻辑问题,诸如,搜索,排序,查找之类的。
数值运算算法:(一般与优化)
例如我要实现从零到一百的求和运算,可以通过for循环去循环遍历 :
using namespace std ;
int main(){
int loop =0,sum=0;
for (loop=1;loop<100;loop=loop+2)
{
sum=sum+loop;
}
sum=sum+100;
cout << sum << endl;
return 0;
}
using namespace std ;
int main(){
int sum =0;
sum=49*(99+1)/2;
sum=sum+100;
cout << sum << endl;
return 0;
}
通过对比显然可以看出后者的程序效率提高了数倍,同理我要实现斐波那契数列第100项为多少,可以用if判断的递归 :
using namespace std;
int Fib(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return (Fib(n - 1) + Fib(n - 2));
}
}
int main()
{
int m ;
m=100;
int n = Fib(m);
cout << n << endl;
return 0;
}
#include<iostream>
using namespace std;
int Fib(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
int f1 = 1,f2 = 1;
int fn;
for(int i = 2;i<n;i++)
{
fn = f1 + f2;
f1 = f2;
f2 = fn;
}
return fn;
}
}
int main()
{
int m;
m=100;
int n = Fib(m);
cout << n << endl;
return 0;
}
通过以上对比举例的方式进行分享,我们可以从中明白仅仅使用C++程序编写而不使用任何算法效率是及其低下的,了解时间复杂度的同学可能更有体会。当然这里面还有很多内容,如多项式计算,指数计算,三角函数计算的优化等等等等,我就在此抛砖引玉,列举两个常见的问题与大家交流分享,也许大家对以上问题还有更好的方式解决,还请留言指教。
话说回来在生活中像这种数值算法其实用的不是特别多,更多的是解决一些逻辑问题的非数值运算算法,在这些算法理论设计中我们通常要使用数据结构来帮助我们我们构建框架。有关非数值运算算法我们下一次会再讲,再会!
点击下方“在看”分享精彩内容
以上是关于最简单易懂的C++笔记分享 Day 19的主要内容,如果未能解决你的问题,请参考以下文章
C++ 随机化快速排序 最简单易懂的代码! 基于归并分区思想实现