In our last blog post we talked about how binary search is able to complete a search in a Logarithmic time frame. In this post the goal is to show you visually how the code differs between counting one at a time vs doing a binary search.
Code (Kotlin)
// Binary Search fun search(array: IntArray, target: Int): Int { var low = 0 # lowest starting point var high = array.size # highest starting point while (low < high) { val mid = (low + high) / 2 # calculate middle val value = array[mid] # get value of middle if (value == target) { # if target is equal to middle return mid # return the index of the target } else if (target > value) { # if target is greater than value low = mid + 1 # set low = mid + 1 } else { high = mid # set high = mid } } return -1 # we didn't find the number in the array } var index = search(array=intArrayOf(0,1,2,3,4,5,6,7,8,9), target=5) if (index >= 0) { println("Found target a index $index"); } else { println("We did not find the number in the array"); }