Skip to content

Commit a8f9061

Browse files
committed
Added iterative binary search algorithm
1 parent 2be287f commit a8f9061

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

algorithm/search/binary_search/desc.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"<a href='https://en.wikipedia.org/wiki/Binary_search_algorithm'>Wikipedia</a>"
1313
],
1414
"files": {
15-
"recursive": "Recursively searching a sorted array"
15+
"recursive": "Recursively searching a sorted array",
16+
"iterative": "Iteratively searching a sorted array"
1617
}
1718
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
function BinarySearch(array, element) { // array = sorted array, element = element to be found,
2+
3+
var minIndex = 0;
4+
var maxIndex = array.length - 1;
5+
var currentIndex;
6+
var testElement;
7+
8+
while (minIndex <= maxIndex) {
9+
10+
middleIndex = Math.floor((minIndex + maxIndex) / 2);
11+
testElement = array[middleIndex];
12+
13+
tracer._print('Searching at index: ' + middleIndex);
14+
tracer._notify(middleIndex);
15+
16+
if (testElement < element) {
17+
18+
tracer._print('Going right.');
19+
minIndex = middleIndex + 1;
20+
21+
} else if (testElement > element) {
22+
23+
tracer._print('Going left.');
24+
maxIndex = middleIndex - 1;
25+
26+
} else {
27+
28+
tracer._print(element + ' is found at position ' + middleIndex + '!');
29+
tracer._select(middleIndex);
30+
31+
return middleIndex;
32+
}
33+
}
34+
35+
tracer._print(element + ' is not found!');
36+
return -1;
37+
}
38+
39+
var element = D[0];
40+
41+
tracer._sleep(1000);
42+
tracer._pace(1000);
43+
tracer._print('Using iterative binary search to find ' + element);
44+
BinarySearch(D, element, 0, D.length - 1);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
var tracer = new Array1DTracer();
2+
var D = Array1D.randomSorted(15, 0, 50);
3+
tracer._setData(D);

0 commit comments

Comments
 (0)