-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.js
40 lines (36 loc) · 1.31 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*jshint multistr: true ,node: true*/
"use strict";
var me = {
binarySearch : function (arr, no, begin, end){
if(begin===undefined) begin = 0;
if(end===undefined) end = arr.length - 1;
if (arr[begin] === undefined || arr[end]===undefined) return false;
if(end >= begin) {
var mid = Math.ceil((begin + end)/2);
if(!Array.isArray(arr[mid])) {
if(arr[mid]==no) return true;
else {
if(no > arr[mid]) {
begin = mid +1;
return me.binarySearch(arr,no,begin,end);
} else {
end = mid-1;
return me.binarySearch(arr,no,begin,end);
}
}
} else {
if(no >= arr[mid][0] && arr[mid][1] >= no) return true;
else {
if(no < arr[mid][0]) {
end = mid-1;
return me.binarySearch(arr,no,begin,end);
} else {
begin = mid +1;
return me.binarySearch(arr,no,begin,end);
}
}
}
} else return false;
}
};
module.exports = me.binarySearch;