Update ExponentialSearch.java

This commit is contained in:
Libin Yang 2019-05-09 20:33:46 +08:00 committed by GitHub
parent 37e6717be9
commit 60bb026f8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,9 +20,11 @@ public class ExponentialSearch {
* @return The index position of the key in the array, returns -1 for empty array
*/
public <T extends Comparable<T>> int findIndex(T[] array, T key) {
int size = array.length;
if(size == 0)
if (array == null || array.length == 0) {
return -1;
}
int size = array.length;
// If the element is present at first position
if (array[0] == key)
return 0;
@ -30,10 +32,10 @@ public class ExponentialSearch {
// Find the range for binary search by repeated doubling
int i = 1;
while (i < size && array[i].compareTo(key) <= 0) {
i = i * 2;
i <<= 1;
}
// Call binary search for the range found
return Arrays.binarySearch(array, i / 2, Math.min(i, size), key);
return Arrays.binarySearch(array, i >> 1, Math.min(i, size), key);
}
}