零散算法

1、字符串匹配

朴素的串匹配算法:

KMP匹配算法:

2、广度优先搜索BFS

3、深度优先搜索DFS

4、狄克斯特拉算法Dijkstra

5、贪婪算法

6、动态规划

7、安全散列算法SHA

用递归分析问题,基于循环写代码。

10、关于查找算法

(1)遍历(数组、链表、xml)

(2)二分查找(前提有序)

(3)hash表查找:哈希表的特点就是查找效率高,时间复杂度为常数级别 O(1), 而额外空间复杂度则要高出许多。

hash_table:hash_table这种数据结构在插入,删除,搜寻等操作上也具有常数平均时间,并且不需要依赖于数据的随机性(RB Tree、AVL Tree依赖于数据的随机性)。如果需要存储的数据相比较桶子的个数来说不是很多的情况采用线性探测或二次探测;如果负载系统比较大则采用拉链法。

(4)map容器:对内存大小比较敏感或者数据存储要求有序的话,则可以用 map 容器,map容器是用红黑树实现的,查找效率稍微低一些,复杂度为(logn)。

(5)数据库查找

选择算法时权衡三个因素: 查找速度, 数据量, 内存使用。

lmdb底层原理:mmap文件映射 ,B+树查找

11、平衡点

有序数组可以利用二分查找法快速的查找特定的值,时间复杂度为O(log2N),但是插入数据时很慢,时间复杂度为O(N);链表的插入和删除速度都很快,时间复杂度为O(1),但是查找特定值很慢,时间复杂度为O(N)。有没有一种数据结构既能像有序数组那样快速的查找数据,又能像链表那样快速的插入数据呢?树就能满足这种要求。不过依然是以算法的复杂度为代价。一个程序当它降低了一个方面的复杂度,必然会在其他方面增加复杂度,阴阳互补。

 

参考连接:

https://blog.youkuaiyun.com/u012152619/article/details/42059325

12、C实现

所有基础数据结构和算法的纯C语言实现,如各自排序、链表、栈、队列、各种树以及应用、图算法、字符串匹配算法、回溯、并查集等

https://github.com/LeechanX/Data-Structures-and-Algorithms-in-C     

七大查找算法实现:

https://www.cnblogs.com/leezx/p/5719012.html

uthash

http://troydhanson.github.io/uthash/

十大排序算法选择与对比:

https://www.cnblogs.com/panda-ling/p/6705193.html

linux内核哈希链表:https://www.cnblogs.com/wanghetao/archive/2013/04/13/3019156.html

https://blog.youkuaiyun.com/hty46565/article/details/53201824

B+树:

B树是一种平衡的多路查找树,在文件系统中主要作为文件的索引。也多用在数据库索引中。因为外存较慢,而且使用二叉树很容易造成频繁的I/O读写,现在可以引入多叉树来改变这种情况的。

https://github.com/KinderRiven/bplus_tree

http://www.srcmini.com/1348.html

https://blog.youkuaiyun.com/xiaohusaier/article/details/77101640

Bloom filter

海量数据处理

https://www.cnblogs.com/haippy/archive/2012/07/14/2590669.html

跳跃表

https://blog.youkuaiyun.com/daniel_ustc/article/details/20218489

红黑树C实现

https://www.cnblogs.com/skywang12345/p/3624177.html

手动迭代开方

海量数据排序:https://blog.youkuaiyun.com/yu487/article/details/86021711

https://blog.youkuaiyun.com/zhushuai1221/article/details/51781002

https://blog.youkuaiyun.com/FX677588/article/details/72471357

比较排序nlogn证明:https://www.zhihu.com/question/24516934

递归和回溯:https://www.cnblogs.com/brifuture/p/6553665.html

https://blog.youkuaiyun.com/yhflyl/article/details/86763197

分治:https://blog.youkuaiyun.com/qq_37763204/article/details/79519823

https://blog.youkuaiyun.com/qq_39382769/article/details/80788293

动态规划:https://www.jianshu.com/p/86daf14620b1

https://www.cnblogs.com/chihaoyuIsnotHere/p/10138087.html

https://github.com/search?l=C&q=动态规划&type=Repositories

贪婪算法:最短路径问题(广度优先狄克斯特拉)都属于贪婪算法

https://www.jianshu.com/p/b613ae9d77ff

五大经典算法:https://github.com/jingong/Algorithm

 

递归算法的时间复杂度计算:https://blog.youkuaiyun.com/so_geili/article/details/53444816

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值