This repository was archived by the owner on Sep 7, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 44
Expand file tree
/
Copy pathbinarySearch.js
More file actions
57 lines (39 loc) · 1.91 KB
/
binarySearch.js
File metadata and controls
57 lines (39 loc) · 1.91 KB
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
50
51
52
53
54
55
56
57
/**
JavaScript implementation of the binary search algorithm.
Author: Brendan Albert
This is a JavaScript iterative (rather than recursive) implementation of the binary search algorithm.
The binary search algorithm works by looking at the middle element of a list.
The list must be sorted to work correctly.
This implementation uses ascending order.
If the value being searched for is not the middle element, then we check
if the value is smaller or larger than the middle element.
This allows the size of the list being searched to be halved each iteration.
The big O runtime of this algorithm is log(n).
Log(n) is nice because it means that given a huge list, say of 1 million IDs,
it will take no more than 20 iterations to determine if the ID is present.
Arguments: value (that we are searching for), list_to_search (the list)
Return: the value if it is found in the list or -1 if the value is not found.
*/
function binarySearch(value, list_to_search) {
search_value = -1
max_index = list_to_search.length - 1
min_index = 0
middle_index = Math.floor( (max_index + min_index) / 2)
current_element = list_to_search[middle_index]
while (max_index >= min_index) {
if (current_element == value)
return current_element
else if (value > current_element)
min_index = middle_index + 1
else if (value < current_element)
max_index = middle_index - 1
middle_index = Math.floor( (min_index + max_index) / 2)
current_element = list_to_search[middle_index]
}
return search_value
}
// Sample lists to test with
id_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
odd_list = [1,3,5,7,9,11,13,15,17,19]
short_list = ['allie', 'ben', 'charlie', 'danielle', 'emilio', 'fred', 'gina', 'henry', 'isabella']
console.log(binarySearch(3, odd_list))