| ... | @@ -10,16 +10,16 @@ pub fn binarySearch(comptime T: type, key: T, items: []const T, comptime compare | ... | @@ -10,16 +10,16 @@ pub fn binarySearch(comptime T: type, key: T, items: []const T, comptime compare |
| 10 | return null; | 10 | return null; |
| 11 | | 11 | |
| 12 | var left: usize = 0; | 12 | var left: usize = 0; |
| 13 | var right: usize = items.len - 1; | 13 | var right: usize = items.len; |
| 14 | | 14 | |
| 15 | while (left <= right) { | 15 | while (left < right) { |
| 16 | // Avoid overflowing in the midpoint calculation | 16 | // Avoid overflowing in the midpoint calculation |
| 17 | const mid = left + (right - left) / 2; | 17 | const mid = left + (right - left) / 2; |
| 18 | // Compare the key with the midpoint element | 18 | // Compare the key with the midpoint element |
| 19 | switch (compareFn(key, items[mid])) { | 19 | switch (compareFn(key, items[mid])) { |
| 20 | .eq => return mid, | 20 | .eq => return mid, |
| 21 | .gt => left = mid + 1, | 21 | .gt => left = mid + 1, |
| 22 | .lt => right = mid - 1, | 22 | .lt => right = mid, |
| 23 | } | 23 | } |
| 24 | } | 24 | } |
| 25 | | 25 | |