From 45762593b532f51b3404bd43d3141bfba2db8fc3 Mon Sep 17 00:00:00 2001 From: = <=> Date: Sat, 17 Oct 2020 20:30:01 +0530 Subject: [PATCH] Added Linear Search Fix --- .../__test__/linearSearch.test.js | 20 +++++++++---------- .../search/linear-search/linearSearch.js | 13 ++++++------ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/algorithms/search/linear-search/__test__/linearSearch.test.js b/src/algorithms/search/linear-search/__test__/linearSearch.test.js index c578fd1f..bf47aff8 100644 --- a/src/algorithms/search/linear-search/__test__/linearSearch.test.js +++ b/src/algorithms/search/linear-search/__test__/linearSearch.test.js @@ -4,17 +4,17 @@ describe('linearSearch', () => { it('should search all numbers in array', () => { const array = [1, 2, 4, 6, 2]; - expect(linearSearch(array, 10)).toEqual([]); - expect(linearSearch(array, 1)).toEqual([0]); - expect(linearSearch(array, 2)).toEqual([1, 4]); + expect(linearSearch(array, 10)).toEqual(-1); + expect(linearSearch(array, 1)).toEqual(0); + expect(linearSearch(array, 2)).toEqual(1); }); it('should search all strings in array', () => { const array = ['a', 'b', 'a']; - expect(linearSearch(array, 'c')).toEqual([]); - expect(linearSearch(array, 'b')).toEqual([1]); - expect(linearSearch(array, 'a')).toEqual([0, 2]); + expect(linearSearch(array, 'c')).toEqual(-1); + expect(linearSearch(array, 'b')).toEqual(1); + expect(linearSearch(array, 'a')).toEqual(0); }); it('should search through objects as well', () => { @@ -33,8 +33,8 @@ describe('linearSearch', () => { { key: 6 }, ]; - expect(linearSearch(array, { key: 10 }, comparatorCallback)).toEqual([]); - expect(linearSearch(array, { key: 5 }, comparatorCallback)).toEqual([0]); - expect(linearSearch(array, { key: 6 }, comparatorCallback)).toEqual([1, 3]); + expect(linearSearch(array, { key: 10 }, comparatorCallback)).toEqual(-1); + expect(linearSearch(array, { key: 5 }, comparatorCallback)).toEqual(0); + expect(linearSearch(array, { key: 6 }, comparatorCallback)).toEqual(1); }); -}); +}); \ No newline at end of file diff --git a/src/algorithms/search/linear-search/linearSearch.js b/src/algorithms/search/linear-search/linearSearch.js index c5fb67c7..227e4885 100644 --- a/src/algorithms/search/linear-search/linearSearch.js +++ b/src/algorithms/search/linear-search/linearSearch.js @@ -10,13 +10,12 @@ import Comparator from '../../../utils/comparator/Comparator'; */ export default function linearSearch(array, seekElement, comparatorCallback) { const comparator = new Comparator(comparatorCallback); - const foundIndices = []; - array.forEach((element, index) => { - if (comparator.equal(element, seekElement)) { - foundIndices.push(index); + for (let i = 0; i < array.length; i += 1) { + if (comparator.equal(array[i], seekElement)) { + return i; } - }); + } - return foundIndices; -} + return -1; +} \ No newline at end of file