gpt4 book ai didi

arrays - in 的排序版本

转载 作者:行者123 更新时间:2023-12-01 08:49:08 24 4
gpt4 key购买 nike

我有一个时间数组event_times,我想检查是否t in event_times。但是,我知道 event_times 已排序。有没有办法利用它来加快搜索速度?

最佳答案

一种惯用的朱利安方式是对以下内容的详细说明:

struct SortedVector{T,V<:AbstractVector} <: AbstractVector{T}
v::V
SortedVector{T,V}(v::AbstractVector{T}) where {T, V} = new(v)
# check sorted in inner constructor??
end
SortedVector(v::AbstractVector{T}) where T = SortedVector{T,typeof(v)}(v)

@inline Base.size(sv::SortedVector) = size(sv.v)
@inline Base.getindex(sv::SortedVector,i) = sv.v[i]
@inline Base.in(e::T,sv::SortedVector{T}) where T = !isempty(searchsorted(sv.v,e))

然后:

julia> v = SortedVector(sort(rand(1:10,10)))
10-element SortedVector{Int64,Array{Int64,1}}:
1
4
5
5
6
6
6
7
7
10

julia> 3 in v
false

julia> 1 in v
true

如果我没记错的话,David Sanders 有一个使用这个名称的实现。也许在看 https://github.com/JuliaIntervals/IntervalOptimisation.jl/blob/889bf43e8a514e696869baaa6af1300ace87b90b/src/SortedVectors.jl会促进重用。

关于arrays - in 的排序版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com