| ... | ... | @@ -190,12 +190,19 @@ pub fn PriorityQueue(comptime T: type) type { |
| 190 | 190 | self.len = new_len; |
| 191 | 191 | } |
| 192 | 192 | |
| 193 | | fn orderFn(lhs: T, rhs: T) std.math.Order { |
| 194 | | return std.math.order(lhs, rhs); |
| 193 | fn linearSearch(elem: T, items: []const T) usize { |
| 194 | var found: usize = 0; |
| 195 | for (items) |item, i| { |
| 196 | if (item == elem) { |
| 197 | found = i; |
| 198 | break; |
| 199 | } |
| 200 | } |
| 201 | return found; |
| 195 | 202 | } |
| 196 | 203 | |
| 197 | 204 | pub fn update(self: *Self, elem: T, new_elem: T) !void { |
| 198 | | var update_index: usize = std.sort.binarySearch(T, elem, self.items, {}, orderFn) orelse 0; |
| 205 | var update_index: usize = linearSearch(elem, self.items); |
| 199 | 206 | assert (update_index >= 0 and update_index < self.items.len); |
| 200 | 207 | _ = self.removeIndex(update_index); |
| 201 | 208 | try self.add(new_elem); |