rust二分搜索

如果要二分搜索某个特定值,可以用binary_search
https://doc.rust-lang.org/stable/std/primitive.slice.html#method.binary_search

如果要实现C++里的lower_bound和upper_bound类似的功能,可以用partition_point:
https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point

pub fn partition_point<P>(&self, pred: P) -> usize where
    P: FnMut(&T) -> bool, 

返回第一个使得pred返回false的元素的下标,与C++里的partition_point一样:
http://cplusplus.com/reference/algorithm/partition_point/?kw=partition_point

例子:

fn main() {
    let a = [1, 2, 3, 3, 4];
    // Lower bound
    println!("{}", a.partition_point(|x| *x < 3));
    // Upper bound
    println!("{}", a.partition_point(|x| *x <= 3));
}
2
4

相关链接:https://github.com/rust-lang/rfcs/issues/2184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值