Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 5.8k
Expand file tree
/
Copy pathJumpSearch.js
More file actions
Latest commit
33 lines (30 loc) · 977 Bytes
/
Copy pathJumpSearch.js
File metadata and controls
33 lines (30 loc) · 977 Bytes
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
/* The Jump Search algorithm allows to combine a linear search with a speed optimization.
* This means that instead of going 1 by 1, we will increase the step of √n and increase that
* step of √n which make the step getting bigger and bigger.
* The asymptotic analysis of Jump Search is o(√n). Like the binary search, it needs to be sorted.
* The advantage against binary search is that Jump Search traversed back only once.
*/
constjumpSearch=(arr,value)=>{
constlength=arr.length
letstep=Math.floor(Math.sqrt(length))
letlowerBound=0
while(arr[Math.min(step,length)-1]<value){
lowerBound=step
step+=step
if(lowerBound>=length){
return-1
}
}
constupperBound=Math.min(step,length)
while(arr[lowerBound]<value){
lowerBound++
if(lowerBound===upperBound){
return-1
}
}
if(arr[lowerBound]===value){
returnlowerBound
}
return-1
}
export{jumpSearch}