目录
前言
今天是总结的第二天,早起的鸟儿有虫吃,早起的虫儿被鸟吃。。。
其实我一直在想,写这一篇,到底是用哪一本书的哪一章来总结。因为这个标题的醒目,肯定会有人以为这一章写代码。最后还是决定了,这一章,主要是来推导一些我们平时见到的,但是却不懂的定义。又是很枯燥的一早上,加油奥里给。。。
数据结构和算法关系
虽然这个标题起的叫数据结构,但是我却总结算法。。。我不是没事找抽,只是呢,在学数据结构的时候,算法是你肯定离不开的东西。
你平时在网上看到的那些文章,在你不经意间搜的时候,是不是都是搜的数据结构与算法这七个字。这说明啥,这说明他们俩是离不开的。
给你打个比方,你想看德云社相声(我也想看),有一天你最想看小岳岳专场,想看小白专场。但是呢,走到园子里之后发现,他们今天生病了,换成了另一批人,你开心吗,不开心对不对。
所以,数据结构和算法也是这样的。没有其中的任何一个都不行。
但是,根据大学里边的概念性的东西来说,类似于我们学校,算法是单独开设课程,并不是和数据结构一起。所以,这一章还是理论。
高斯求和
想必看到这儿的人肯定对这个人早有耳闻。
如果让你来做累加求和,你肯定会写这样的代码:
int sum=0;
int n=100;
for(int i=0;i<=n;i++){
sum+=i;
}
这样做确实没错,但是问题来了,你这和循环了多少次?如果没写错的话,是101次吧。为什么呢,因为你在每次累加的时候都会去走一遍for循环,这样就会平平增加不必要的时间去运算,你有这时间,你根本就抢不到亚索。
我们直接来看这个天才当时是怎么做的。
因为sum=1+2+3+…+100。
但是呢,sum=100+99+98+…+1
如果把他们两个加起来,那就是2sum=101+101+101+…+101
一共多少个101,100个吧,那如果去除2呢,结果不就是5050了。用代码怎么写?
int i=0;
int sum=0