-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsrchElementInSortedArrayBinarySrch.js
More file actions
77 lines (63 loc) · 1.45 KB
/
srchElementInSortedArrayBinarySrch.js
File metadata and controls
77 lines (63 loc) · 1.45 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Javascript program to find whether
// a given element is present
// in the given 2-D matrix
var M = 3;
var N = 4;
// Basic binary search to
// find an element in a 1-D array
function binarySearch1D(arr, K)
{
var low = 0;
var high = N - 1;
while (low <= high) {
var mid = low + parseInt((high - low) / 2);
// if element found return true
if (arr[mid] == K)
return true;
// if middle less than K then
// skip the left part of the
// array else skip the right part
if (arr[mid] < K)
low = mid + 1;
else
high = mid - 1;
}
// if not found return false
return false;
}
// Function to search an element
// in a matrix based on
// Divide and conquer approach
function searchMatrix(matrix, K)
{
var low = 0;
var high = M - 1;
while (low <= high) {
var mid = low + parseInt((high - low) / 2);
// if the element lies in the range
// of this row then call
// 1-D binary search on this row
if (K >= matrix[mid][0]
&& K <= matrix[mid][N - 1])
return binarySearch1D(matrix[mid], K);
// if the element is less than the
// starting element of that row then
// search in upper rows else search
// in the lower rows
if (K < matrix[mid][0])
high = mid - 1;
else
low = mid + 1;
}
// if not found
return false;
}
// Driver code
var matrix = [ [ 1, 3, 5, 7 ],
[ 10, 11, 16, 20 ],
[ 23, 30, 34, 50 ] ];
var K = 3;
if (searchMatrix(matrix, K))
console.log( "Found" );
else
console.log( "Not found" );