我是一名有用的助手,可以翻译文本。
我有一个已排序的
由于排序的工作方式,插入和排序将效率低下,时间复杂度为O(n log n),分配成本为2*n。请参考Vec::sort_by。
我有一个已排序的
v: Vec<EventHandler<T>>
,我想在保持排序的同时将一个元素插入其中。最有效的方法是什么?Rust似乎没有内置的方法来实现这一点。
EventHandler<T>
如下:struct EventHandler<T: Event + ?Sized> {
priority: i32,
f: fn(&mut T),
}
由于排序的工作方式,插入和排序将效率低下,时间复杂度为O(n log n),分配成本为2*n。请参考Vec::sort_by。
Vec
已经实现了binary_search
和insert
方法。因此只需要找到合适的索引并在那里插入新元素即可。 - Konstantin V. SalikhovBinaryHeap
是一个可能的选择。 - Shepmaster