binarySearch<T extends Comparable> function

int binarySearch<T extends Comparable>(
  1. List<T> list,
  2. T target
)

Implementation

int binarySearch<T extends Comparable>(List<T> list, T target) {
  int low = 0;
  int high = list.length - 1;

  while (low <= high) {
    int mid = (low + high) ~/ 2;
    int comparison = list[mid].compareTo(target);

    if (comparison == 0) {
      return mid;
    } else if (comparison < 0) {
      low = mid + 1;
    } else {
      high = mid - 1;
    }
  }

  return -1;
}