There is an implementation of the binary search algorithm. Why is there a bit shift and ref in the parameters?
public static int binarySearch(ref int[] x, int searchValue, int left, int right) { if (right < left) { return -1; } int mid = (left + right) >> 1; if (searchValue > x[mid]) { return binarySearch(ref x, searchValue, mid + 1, right); } else if (searchValue < x[mid]) { return binarySearch(ref x, searchValue, left, mid - 1); } else { return mid; } }