图解算法

267 阅读3分钟

找了一本听说是入门级的算法书,做一下笔记,假如真的入门就给我爸当休闲读物看。毕竟他上次听双指针听得津津有味,还研究了一上午hhh。提前N年让弹幕上“60岁刚退休,才开始看MyBatis”成为现实!!

算法简介

一般来说就是介绍复杂度吧,我爸是数学老师应该能看懂吧。。。

二分查找,重点是有序数组!

运行时间

O(logn)/O(nlogn)/O(n)/O(n^2)/O(n!)

image.png

image.png

这本真的就是老外写得,很emmm废话很多,可能文化差异,例子也不是特别能立马get。

数组是一整块内存,链表存储可以分散开来

递归

emmm说实在我很烦它

快速排序

哇哦,原来c语言的qsort就是快速排序。

没错选择排序很慢很慢O(n^2),快速排序平均是O(nlogn)最坏的话也是O(n^2),合并排序是O(nlogn)

散列表

真的感触颇深,原来被称为入门的作品能包含那么多底层知识,一遍遍学的感想真的不一样!

HashTable我的基础真的太差了(真的与个人经历表现极不相符)。。。原来你就散列表,淦我真的。。。背Java面经的时候完全没反应过来

O(n) 10s,1m66s,16m6s
O(logn)1s,1s,2s

以上就是数量为100/1000/10000简单查找和二分查找的速度对比

散列表适用于:模拟映射关系、防止重复、记住缓存数据——以免服务器再通过处理来生成它们

loadfactory

数组+散列函数->散列表

广度优先搜索

看到python代码。。。读研真的毁我人生!!!明明大三大四时候的我什么都会的!!!!

Dijkstra

哇哦路由表,大二是算法,大三的计算机网络,完全没联系起来,现在全懂了。

贪心

NP算法、背包问题、集合覆盖问题

说实在,说是入门只是因为有卡通吧,跟我本科课本几乎一个难度,甚至还少了详细的描述,不禁让人两眼一黑。

动态规划

背包问题、最长公共子序列。。。好怀念呀。。。我的时间。。。(都用了玩游戏追星上网冲浪了,真的是很美好的时光呀)

k近邻

嘿嘿嘿帮师姐敲的就是聚类算法的代码,最后竟然还介绍了机器学习。。。我真的不配

其他算法

反向索引,完全没听说过,是搜索引擎
傅里叶变换,大四学过,图像处理会用到,原来声音识别更常用呀。
并行算法,负载均衡
MapReduce,那本看不懂的高性能MySQL好像出现过这个名词。映射(map)和归并(reduce)
布隆过滤器和HyperLogLog,看到过!redis就是你!!!处理穿透的时候!嘿嘿还记得!
比较文件,SHA安全散列函数,secure hash algorithm,说实在对不起大四疯狂熬夜复习网络安全闭卷考试的自己。。。明明那时候什么都会的!人怎么会堕落成这样(如此享受人生,看样子未来再也没有这种机会了)

总体感想

。。。我的大学还是很努力的,很显然太为难我爸了,还是给他看FirstHeadJava吧