From 5c946119e793bc38ef7c87a7ad7094cb033fabfc Mon Sep 17 00:00:00 2001 From: crackCodeLogn Date: Wed, 13 Feb 2019 02:18:01 +0530 Subject: [PATCH] Making the median calculating part safe from integer spillovers --- src/main/java/com/search/BinarySearch.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/search/BinarySearch.java b/src/main/java/com/search/BinarySearch.java index 231490a4..d7d365d4 100644 --- a/src/main/java/com/search/BinarySearch.java +++ b/src/main/java/com/search/BinarySearch.java @@ -2,38 +2,38 @@ package src.main.java.com.search; /** * Binary search is an algorithm which finds the position of a target value within a sorted array - * + *

* Worst-case performance O(log n) * Best-case performance O(1) * Average performance O(log n) * Worst-case space complexity O(1) */ -public final class BinarySearch{ +public final class BinarySearch { /** * @param array is an array where the element should be found - * @param key is an element which should be found - * @param is any comparable type + * @param key is an element which should be found + * @param is any comparable type * @return index of the element */ - public static > int findIndex(T array[], T key) { - return search(array, key, 0, array.length-1); + public static > int findIndex(T[] array, T key) { + return search(array, key, 0, array.length - 1); } /** * @param array The array to search - * @param key The element you are looking for - * @param left The lower bound + * @param key The element you are looking for + * @param left The lower bound * @param right The upper bound * @return the location of the key **/ - private static > int search(T array[], T key, int left, int right){ + private static > int search(T[] array, T key, int left, int right) { if (left > right) { return -1; // Key not found } // Find median - int median = (left + right)/2; + int median = left + (right - left) / 2; int comp = key.compareTo(array[median]); if (comp < 0) {