Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
49 lines (42 loc) · 1.36 KB

File metadata and controls

49 lines (42 loc) · 1.36 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package 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)
* Worst-case space complexity O(1)
*/
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 <T> is any comparable type
* @return index of the element
*/
public static <T extends Comparable<T>> 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 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) {
if (left > right) {
return -1; // Key not found
}
// Find median
int median = left + (right - left) / 2;
int comp = key.compareTo(array[median]);
if (comp < 0) {
return search(array, key, left, median - 1);
}
if (comp > 0) {
return search(array, key, median + 1, right);
}
return median;
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.