mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 08:16:50 +08:00
npx standard --fix
This commit is contained in:
@ -1,27 +1,26 @@
|
||||
/*Binary Search-Search a sorted array by repeatedly dividing the search interval
|
||||
/* Binary Search-Search a sorted array by repeatedly dividing the search interval
|
||||
* in half. Begin with an interval covering the whole array. If the value of the
|
||||
* search key is less than the item in the middle of the interval, narrow the interval
|
||||
* to the lower half. Otherwise narrow it to the upper half. Repeatedly check until the
|
||||
* value is found or the interval is empty.
|
||||
*/
|
||||
|
||||
function binarySearch(arr, i) {
|
||||
var mid = Math.floor(arr.length / 2);
|
||||
if (arr[mid] === i) {
|
||||
console.log("match", arr[mid], i);
|
||||
return arr[mid];
|
||||
} else if (arr[mid] < i && arr.length > 1) {
|
||||
binarySearch(arr.splice(mid, Number.MAX_VALUE), i);
|
||||
} else if (arr[mid] > i && arr.length > 1) {
|
||||
binarySearch(arr.splice(0, mid), i);
|
||||
} else {
|
||||
console.log("not found", i);
|
||||
return -1;
|
||||
}
|
||||
|
||||
function binarySearch (arr, i) {
|
||||
var mid = Math.floor(arr.length / 2)
|
||||
if (arr[mid] === i) {
|
||||
console.log('match', arr[mid], i)
|
||||
return arr[mid]
|
||||
} else if (arr[mid] < i && arr.length > 1) {
|
||||
binarySearch(arr.splice(mid, Number.MAX_VALUE), i)
|
||||
} else if (arr[mid] > i && arr.length > 1) {
|
||||
binarySearch(arr.splice(0, mid), i)
|
||||
} else {
|
||||
console.log('not found', i)
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
var ar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
||||
binarySearch(ar, 3);
|
||||
binarySearch(ar, 7);
|
||||
binarySearch(ar, 13);
|
||||
var ar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
binarySearch(ar, 3)
|
||||
binarySearch(ar, 7)
|
||||
binarySearch(ar, 13)
|
||||
|
@ -1,35 +1,35 @@
|
||||
/* 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
|
||||
* 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.
|
||||
*/
|
||||
|
||||
const jumpSearch = (arr, value) => {
|
||||
const length = arr.length;
|
||||
let step = Math.floor(Math.sqrt(length));
|
||||
let lowerBound = 0;
|
||||
while (arr[Math.min(step, length) - 1] < value) {
|
||||
lowerBound = step;
|
||||
step += step;
|
||||
if (lowerBound >= length) {
|
||||
return -1;
|
||||
}
|
||||
const length = arr.length
|
||||
let step = Math.floor(Math.sqrt(length))
|
||||
let lowerBound = 0
|
||||
while (arr[Math.min(step, length) - 1] < value) {
|
||||
lowerBound = step
|
||||
step += step
|
||||
if (lowerBound >= length) {
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
const upperBound = Math.min(step, length);
|
||||
while (arr[lowerBound] < value) {
|
||||
lowerBound++;
|
||||
if (lowerBound === upperBound) {
|
||||
return -1;
|
||||
}
|
||||
const upperBound = Math.min(step, length)
|
||||
while (arr[lowerBound] < value) {
|
||||
lowerBound++
|
||||
if (lowerBound === upperBound) {
|
||||
return -1
|
||||
}
|
||||
if (arr[lowerBound] === value) {
|
||||
return lowerBound;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
if (arr[lowerBound] === value) {
|
||||
return lowerBound
|
||||
}
|
||||
return -1
|
||||
}
|
||||
const arr = [0,0,4,7,10,23,34,40,55,68,77,90]
|
||||
jumpSearch(arr,4);
|
||||
jumpSearch(arr,34);
|
||||
jumpSearch(arr,77);
|
||||
const arr = [0, 0, 4, 7, 10, 23, 34, 40, 55, 68, 77, 90]
|
||||
jumpSearch(arr, 4)
|
||||
jumpSearch(arr, 34)
|
||||
jumpSearch(arr, 77)
|
||||
|
@ -4,24 +4,24 @@
|
||||
* for the target value until a match is found or until all the elements
|
||||
* have been searched.
|
||||
*/
|
||||
function SearchArray(searchNum, ar) {
|
||||
var position = Search(ar, searchNum);
|
||||
if (position != -1) {
|
||||
console.log("The element was found at " + (position + 1));
|
||||
} else {
|
||||
console.log("The element not found");
|
||||
}
|
||||
function SearchArray (searchNum, ar) {
|
||||
var position = Search(ar, searchNum)
|
||||
if (position != -1) {
|
||||
console.log('The element was found at ' + (position + 1))
|
||||
} else {
|
||||
console.log('The element not found')
|
||||
}
|
||||
}
|
||||
|
||||
// Search “theArray” for the specified “key” value
|
||||
function Search(theArray, key) {
|
||||
for (var n = 0; n < theArray.length; n++)
|
||||
if (theArray[n] == key)
|
||||
return n;
|
||||
return -1;
|
||||
function Search (theArray, key) {
|
||||
for (var n = 0; n < theArray.length; n++) {
|
||||
if (theArray[n] == key) { return n }
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
||||
var ar = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||
SearchArray(3, ar);
|
||||
SearchArray(4, ar);
|
||||
SearchArray(11, ar);
|
||||
var ar = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
SearchArray(3, ar)
|
||||
SearchArray(4, ar)
|
||||
SearchArray(11, ar)
|
||||
|
Reference in New Issue
Block a user