Merge pull request #706 from crackCodeLogn/Development
Making the median calculating part safe from integer spillovers
This commit is contained in:
commit
5227629d3e
@ -2,7 +2,7 @@ package src.main.java.com.search;
|
||||
|
||||
/**
|
||||
* Binary search is an algorithm which finds the position of a target value within a sorted array
|
||||
*
|
||||
* <p>
|
||||
* Worst-case performance O(log n)
|
||||
* Best-case performance O(1)
|
||||
* Average performance O(log n)
|
||||
@ -16,7 +16,7 @@ public final class BinarySearch{
|
||||
* @param <T> is any comparable type
|
||||
* @return index of the element
|
||||
*/
|
||||
public static <T extends Comparable<T>> int findIndex(T array[], T key) {
|
||||
public static <T extends Comparable<T>> int findIndex(T[] array, T key) {
|
||||
return search(array, key, 0, array.length - 1);
|
||||
}
|
||||
|
||||
@ -27,13 +27,13 @@ public final class BinarySearch{
|
||||
* @param right The upper bound
|
||||
* @return the location of the key
|
||||
**/
|
||||
private static <T extends Comparable<T>> int search(T array[], T key, int left, int right){
|
||||
private static <T extends Comparable<T>> 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) {
|
||||
|
Loading…
Reference in New Issue
Block a user