搜索相关的算法和数据结构

什么是搜索
搜索是在一个元素集合中,找到特定的某个元素的过程
搜索相关的算法和数据结构
1.遍历搜索
插入时间复杂度(顺序表): O(N)
删除时间复杂度(顺序表): O(N)
查找时间复杂度: O(N)
2.二分查找(折半查找)
前提条件:元素有序的、支持随机访问的线性结构中
插入时间复杂度(顺序表): O(N)
删除时间复杂度(顺序表): O(N)
查找时间复杂度: O(logN)
3.哈希表
插入时间复杂度: O(1)
删除时间复杂度: O(1)
查找时间复杂度: O(1)
4.搜索树
插入时间复杂度: O(logN)
删除时间复杂度: O(logN)
查找时间复杂度: O(logN)
各自的优缺点及适用场景
遍历查找、二分查找由于其插入\删除时间复杂度较高,所以被分类为"静态的查找算法"
哈希表、搜索树比较适合"动态的查找算法" 集合中的元素经常变更
如:新华字典适用与静态算法,而淘宝购物用户购物车适用于动态算法

遍历查找 vs 二分查找
根据n的大小来决定怎么选用,只要n的大小不远远的大于logN,就选用遍历查找
例:数组中有100个元素,选用遍历查找
哈希表vs平衡搜索树
hash表实现简单、速度快、更容易实现线程安全
平衡搜索树,它维护的key是有序的,不会出现极端情况(如hash冲突)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值