erlang 实现list的二分查找
2014-10-07 10:56
225 查看
erlang 中的 list 和 C 的链表还是有差别的,没有指针不能实现建树,很难用内存换取时间,那该如何做呢?
由于tuple支持随机访问的,而且list能转换成tuple,转换时间复杂度O(n),可以通过tuple进行二分查找,
所以如果你需要对同一个长度为N的 list 进行M次查找的,最终的时间复杂度为O(n+ m * lgn) ,
这里我就不贴丑陋的代码,有兴趣的同学可以试试,比轮询要快了很多
由于tuple支持随机访问的,而且list能转换成tuple,转换时间复杂度O(n),可以通过tuple进行二分查找,
所以如果你需要对同一个长度为N的 list 进行M次查找的,最终的时间复杂度为O(n+ m * lgn) ,
这里我就不贴丑陋的代码,有兴趣的同学可以试试,比轮询要快了很多
相关文章推荐
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现,附代码)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 二分查找的C++实现
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 在一个旋转过的有序数组上实现二分查找
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 泛型实现二分查找
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 二分查找算法的C/C++实现
- java语言实现二分查找数据法