Skip to content

Files

Latest commit

 

History

History

Searching Algorthims

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Searching in JavaScript

Searching Algorithms in JavaScript

Linear Search in JavaScript

const arr = [1, 2, 6, 9, 0, -5];

const linearSearch = (arr, target) => {
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] === target) {
            return i;
        }
    }
    return -1;
}

console.log(linearSearch(arr, 8));
console.log(arr.includes(9));
console.log(arr.indexOf(9));
console.log(arr.find((num) => num > 0));
console.log(arr.findIndex((num) => num < 0));

Binary Search In JavaScript

const BinarySearch = (arr, target) => {
    let start = 0, end = arr.length - 1;
    while (start <= end) {
        let mid = Math.floor((start + end) / 2);

        if (arr[mid] === target) {
            return mid;
        }

        else if (arr[mid] > target) {
            end = mid - 1;
        }

        else {
            start = mid + 1;
        }
    }

    return -1;
}

console.log(BinarySearch([1, 4, 6, 9, 12, 15], 8));

Binary Search using Recursion

const BinarySearchRecur = (arr, target) => {
    return BinarySearchUtil(arr, target, 0, arr.length);
}

const BinarySearchUtil = (arr, target, start, end) => {
    if (start > end)
        return -1;

    let mid = Math.floor((start + end) / 2);

    if (arr[mid] === target) {
        return mid;
    }

    else if (arr[mid] > target) {
        return BinarySearchUtil(arr, target, start, mid - 1);
    }

    else {
        return BinarySearchUtil(arr, target, mid + 1, end);
    }
}

Find floor and ceil value of X in an array

const floorCeil = (arr, target) => {
    let start = 0, end = arr.length;
    let floor = -1, ceil = -1;
    while(start <= end){
        let mid = Math.floor((start + end)/2);

        if(arr[mid] === target){
            floor = mid;
            ceil = mid;
            return [ceil, mid]
        }

        else if(arr[mid] > target){
            ceil = mid;
            end = mid - 1;
        }

        else {
            floor = mid;
            start = mid + 1;
        }
    }

    return [ceil, floor]
}

Practice Questions

Level 1

Level 2