diff options
| author | Bhargav Srinivasan <bsvasan92@icloud.com> | 2020-09-22 01:05:33 -0700 |
|---|---|---|
| committer | Bhargav Srinivasan <bsvasan92@icloud.com> | 2020-09-22 01:05:33 -0700 |
| commit | f083ea88d8a9fcfdc0e344b122207f6c7fe0be36 (patch) | |
| tree | bf7349b084f155fad867c5e59ffd22163f277366 /lib/std/priority_queue.zig | |
| parent | 26de64be138e6d53212ec1b362796d890dd42c7b (diff) | |
| download | zig-f083ea88d8a9fcfdc0e344b122207f6c7fe0be36.tar.gz zig-f083ea88d8a9fcfdc0e344b122207f6c7fe0be36.zip | |
using binary search function from std.sort
Diffstat (limited to 'lib/std/priority_queue.zig')
| -rw-r--r-- | lib/std/priority_queue.zig | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/lib/std/priority_queue.zig b/lib/std/priority_queue.zig index c91af77dfe..a074fbec19 100644 --- a/lib/std/priority_queue.zig +++ b/lib/std/priority_queue.zig @@ -190,26 +190,12 @@ pub fn PriorityQueue(comptime T: type) type { self.len = new_len; } - fn binarySearch(items: []const T, target: T) usize { - var left: usize = 0; - var right: usize = items.len-1; - - while(left <= right) { - const mid = left + (right - left) / 2; - if (items[mid] == target) { - return mid; - } else if (items[mid] < target) { - left= mid+1; - } else { - right= mid-1; - } - } - - return 0; + fn orderFn(lhs: T, rhs: T) std.math.Order { + return std.math.order(lhs, rhs); } pub fn update(self: *Self, elem: T, new_elem: T) !void { - var update_index: usize = binarySearch(self.items, elem); + var update_index: usize = std.sort.binarySearch(T, elem, self.items, orderFn) orelse 0; assert (update_index >= 0 and update_index < self.items.len); _ = self.removeIndex(update_index); try self.add(new_elem); |
