算法书学习笔记

14天阅读挑战赛

关于算法,其实也有系统性的去看过一些视频和书籍,但是每次看完都存在一个问题,就是还是不会写或者直接暴力法搞出来,这简直不够优雅!然而我恰好遇到了CSDN的这个算法学习活动,因此想借这个机会,再续前缘!

本次的博客参考的书籍为:趣学算法(第2版)-异步社区-致力于优质IT知识的出版和分享 (epubit.com)

 本文将从书籍的1.1-1.3进行文章的学习。废话不多说,直接开干!

1.1学习笔记:

程序=数据结构+算法

这是显而易见的。在我的认知中,程序就是一个可以工作的“机器”,这个“机器”要工作起来,离不开“汽油”数据结构和“工作流程”算法。数据结构和算法两者相辅相成。数据结构往往在很大程度上就制约了算法,算法也操控着数据结构。举个简单的例子,在C++语言中,有很多的库函数例如:find,erase。我们往往都是调用库函数,但是却没想过自己完全用时间复杂度更小的方式去实现。因此数据结构和算法决定了一个程序的可靠性和实用性!。

1.2学习笔记:

在本节中,老师给了一个小题目:求【-1,1,-1,1,,(-1)n次方】的一个求和。

我看到这个题的第一个思路是利用等比数列,公比=-1,利用求和公式即可求出来。

伪代码如下:

int sum(n){
    int ans = 0;
    ans = ((-1 - (-1 * (-1)^n)))/(1 - (-1))
    rteurn ans
}

其实看着很复杂,就是一个等比求和公式而已。 

当然了。老师也给了下面这些算法思想。

暴力法把每个元素利用sum求和
技巧判断元素个数为奇数或偶数判断结果

在这一个小题中,其实就可以看出来我们对于算法的把握。暴力法利用一个for循环,时间复杂度为On,技巧,时间复杂度为O1.这里关于时间复杂度的定义由于我这上学期研一课程中已经学习了,所以不做过多解释。

1.3学习笔记:

这节内容可以说十分有趣了,因为很早之前我听过这个故事,那是在数学课上面。据说反正很多亿的谷子,当时我还觉得非常不可思议。不至于吧,于是我利用等比求和算了一下,发现计算机都算不出来(小时候的计算机很垃圾)

当然了,文章这部分主要想告诉我们,对于一个看起来复杂度不高的算法,但有可能会爆炸性的数据增长,这里如果没理解,我们可以用数字说明,当然文章中也有这个说明:

2^1=2  2^2=4  2^3=8..............2^10=1024........2^64=18446744073709551616

看起来前面还好,但是到后面数据爆炸了,你的内存可能完全hold不住,或者说计算时间完全瘫痪。


到此,我们完成了第一次的课程学习笔记内容。我个人认为这个文章写的还是很好的,全篇利用故事情节把你带入,然后举例一些经典算法给你看看实际效果,再加上是伪代码增加了可读性,适合那些准备刚入门学习写程序的小伙伴,好了,本次笔记就到这里,后续我们会写第一章后续的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值