Skip to content

Commit bb66287

Browse files
committed
create binary_search
1 parent b480340 commit bb66287

File tree

3 files changed

+42
-6
lines changed

3 files changed

+42
-6
lines changed

javascript/binary_search.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
const { getArraySorted } = require("./utils");
2+
const array = getArraySorted(10000, 1000)
3+
let count = 0
4+
5+
/**
6+
* @description - Алгоритм рекурсивного бинарного поиска, сложность O(log2n)
7+
* @param {Array} array
8+
* @param {string | number} item
9+
* @param {Number} start
10+
* @param {Number} end
11+
* @returns
12+
*/
13+
function recursiveBinarySearch(array, item, start, end) {
14+
try {
15+
let middle = Math.floor((start + end) / 2);
16+
count += 1
17+
if (item === array[middle]) {
18+
return middle
19+
}
20+
if (item < array[middle]) {
21+
return recursiveBinarySearch(array, item, start, middle - 1)
22+
} else {
23+
return recursiveBinarySearch(array, item, middle + 1, end)
24+
}
25+
} catch (e) {
26+
return null
27+
}
28+
}
29+
30+
console.log(recursiveBinarySearch(array, 333, 0, array.length))
31+
console.log('count =', count)
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
const { randomArray } = require("./utils");
2-
const array = randomArray(100, 100)
2+
const array = randomArray(10000, 1000)
33
let count = 0
44
/**
5-
* @description - Алгоритм линейнего поиска, сложность O(n), где
6-
* n - количество операций или же длина массива.
5+
* @description - Алгоритм линейнего поиска, сложность O(n)
76
* @param {Array} array
87
* @param {string | number} item
98
*/
@@ -16,5 +15,5 @@ function linearSearch(array, item) {
1615
}
1716
return null
1817
}
19-
console.log(linearSearch(array, 11))
20-
console.log('count = ', count)
18+
console.log(linearSearch(array, 333))
19+
console.log('count =', count)

javascript/utils.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
module.exports.randomArray = (length, max) => Array(length).fill().map(() => Math.round(Math.random() * max))
1+
const randomArray = (length, max) => Array(length).fill().map(() => Math.round(Math.random() * max))
2+
3+
module.exports.randomArray = randomArray
4+
5+
module.exports.getArraySorted = (length, max) => randomArray(length, max).sort((a, b) => {
6+
return a - b;
7+
})

0 commit comments

Comments
 (0)