@@ -38,50 +38,24 @@ function binarySearchRecursive(array, search, offset = 0) {
3838 * @param {string|number } search value to search for
3939 */
4040function binarySearchIterative ( array , search ) {
41- // console.log('binarySearchIterative', {array, search});
4241 let start = 0 ;
43- let end = array . length ;
44- const half = ( ) => parseInt ( ( end - start ) / 2 , 10 ) + start ;
42+ let end = array . length - 1 ;
43+ const half = ( ) => start + parseInt ( ( end - start ) / 2 , 10 ) ;
4544
46- while ( end - start > 0 ) {
45+ while ( start <= end ) {
4746 const currentIndex = half ( ) ;
4847 const current = array [ currentIndex ] ;
4948
50- if ( current === search ) {
51- return currentIndex ;
52- } if ( search > current ) {
53- start = currentIndex ;
49+ if ( current === search ) return currentIndex ;
50+
51+ if ( search > current ) {
52+ start = currentIndex + 1 ;
5453 } else if ( search < current ) {
55- end = currentIndex ;
54+ end = currentIndex - 1 ;
5655 }
5756 }
5857
5958 return - 1 ;
6059}
6160
62- // const binarySearch = binarySearchRecursive;
63- const binarySearch = binarySearchIterative ;
64-
65- // function test() {
66- // const directory = ['Adrian', 'Bella', 'Charlotte', 'Daniel',
67- // 'Emma', 'Hanna', 'Isabella', 'Jayden', 'Kaylee', 'Luke', 'Mia',
68- // 'Nora', 'Olivia', 'Paisley', 'Riley', 'Thomas', 'Wyatt', 'Xander', 'Zoe'];
69- //
70- // const assert = require('assert');
71- // assert.equal(binarySearch([], 'not found'), -1);
72- // assert.equal(binarySearch([1], 2), -1);
73- // assert.equal(binarySearch([1], 1), 0);
74- // assert.equal(binarySearch([1, 2, 3], 1), 0);
75- // assert.equal(binarySearch([1, 2, 3], 2), 1);
76- // assert.equal(binarySearch([1, 2, 3], 3), 2);
77- // assert.equal(binarySearch([1, 2, 3], 31), -1);
78- // assert.equal(binarySearch(directory, 'Adrian'), 0);
79- // assert.equal(binarySearch(directory, 'Hanna'), 5);
80- // assert.equal(binarySearch(directory, 'Zoe'), 18);
81- // assert.equal(binarySearch(directory, 'not found'), -1);
82- // }
83-
84- // test();
85-
86-
87- module . exports = { binarySearch, binarySearchIterative, binarySearchRecursive } ;
61+ module . exports = { binarySearchIterative, binarySearchRecursive } ;
0 commit comments