1
+ class BinarySearch {
2
+ iterative ( key , orderedVector ) {
3
+ if ( ! ( orderedVector instanceof Array ) && typeof key !== 'number' )
4
+ throw new Error ( "it is necessary to validate the types of data reported." ) ;
5
+
6
+ let inferiorLimit = 0 ; // first vector index in Javascript
7
+ let upperLimit = orderedVector . length - 1 ; // last index of the vector in Javascript
8
+ let middle ;
9
+
10
+ while ( inferiorLimit <= upperLimit ) {
11
+ middle = parseInt ( ( inferiorLimit + upperLimit ) / 2 ) ;
12
+
13
+ if ( key === orderedVector [ middle ] )
14
+ return middle ;
15
+ else if ( key < orderedVector [ middle ] )
16
+ upperLimit = middle - 1 ;
17
+ else
18
+ inferiorLimit = middle + 1 ;
19
+ }
20
+
21
+ return - 1 ; // Not found
22
+ }
23
+
24
+ recursive ( key , orderedVector , leftInferiorLimit , rightUpperLimit ) {
25
+ if ( typeof key !== 'number' && ! ( orderedVector instanceof Array ) && typeof leftInferiorLimit !== 'number' && typeof rightUpperLimit !== 'number' )
26
+ throw new Error ( "it is necessary to validate the types of data reported." ) ;
27
+
28
+ const middle = parseInt ( ( leftInferiorLimit + rightUpperLimit ) / 2 ) ;
29
+
30
+ if ( key === orderedVector [ middle ] )
31
+ return middle ;
32
+
33
+ if ( leftInferiorLimit >= rightUpperLimit )
34
+ return - 1 ; // Not found
35
+ else if ( key > orderedVector [ middle ] ) // 10 < 9
36
+ return this . recursive ( key , orderedVector , middle + 1 , rightUpperLimit ) ;
37
+ else
38
+ return this . recursive ( key , orderedVector , leftInferiorLimit , middle - 1 ) ;
39
+ }
40
+ }
41
+
42
+ function main ( ) {
43
+ let vector = [ ]
44
+
45
+ for ( let index = 1 ; index <= 50 ; index ++ )
46
+ vector . push ( index )
47
+
48
+ const instance = new BinarySearch ( ) ;
49
+ const wantedValue = 1 ;
50
+ try {
51
+ const resultIterative = instance . iterative ( wantedValue , vector ) ;
52
+ const resultRecursive = instance . recursive ( wantedValue , vector , 0 , vector . length ) ;
53
+
54
+ const getMessage = value => {
55
+ if ( value === - 1 )
56
+ return "Value not found" ;
57
+ else
58
+ return `Value found in position ${ value } ` ;
59
+ }
60
+
61
+ console . log ( `Wanted Value -> ${ wantedValue } ` ) ;
62
+ console . log ( `Iterative -> ${ getMessage ( resultIterative ) } ` ) ;
63
+ console . log ( `Recursive -> ${ getMessage ( resultRecursive ) } ` ) ;
64
+ } catch ( error ) {
65
+ console . error ( error . message ) ;
66
+ }
67
+ }
68
+
69
+ main ( ) ;
0 commit comments