Human Readable Binary Search

In this post, I used

  • Introduce explaining boolean variables
  • Given attention to variable naming

Please review the below code or visit https://gist.github.com/way2datta/7d32ee72289f7f5c5ea2d4068139f48d
and let me know your thoughts?

public class IntArray
{
public static int BinarySearch(int[] items, int searchTerm)
{
return SearchRecursively(items, searchTerm, 0, items.Length – 1);
}
private static int SearchRecursively(int[] items, int searchTerm, int lowerIndex, int upperIndex)
{
var scannedAllItems = lowerIndex > upperIndex;
if (scannedAllItems) return -1;
var middleIndex = (lowerIndex + upperIndex) / 2;
var middleItem = items[middleIndex];
var isItemPresentAtMiddleIndex = items[middleIndex] == searchTerm;
if (isItemPresentAtMiddleIndex) return middleIndex;
var searchItemInLowerHalf = middleItem.CompareTo(searchTerm) > 0;
if (searchItemInLowerHalf) return SearchRecursively(items, searchTerm, lowerIndex, middleIndex – 1);
var searchItemInUpperHalf = middleItem.CompareTo(searchTerm) < 0;
if (searchItemInUpperHalf) return SearchRecursively(items, searchTerm, middleIndex + 1, upperIndex);
return -1;
}
}
view raw BinarySearch.cs hosted with ❤ by GitHub