Complete-Preparation

πŸŽ‰ One-stop destination for all your technical interview Preparation πŸŽ‰

View the Project on GitHub

Binary Search

Code

int binarySearch(vector<int> &a, int key)
{
    int l = 0, r = a.size() - 1;
    while (l <= r){
        int mid = l + (r - l) / 2;
        if (a[mid] == key){
            return mid;
        }
        else if (a[mid] < key){
            l = mid + 1;
        }
        else{
            r = mid - 1;
        }
    }
    return -1;
}

Code

int binarySearchDes(vector<int> &a, int key)
{
    int l = 0, r = a.size() - 1;
    while (l <= r){
        int mid = l + (r - l) / 2;
        if (a[mid] == key){
            return mid;
        }
        else if (a[mid] < key){
            r = mid - 1;
        }
        else{
            l = mid + 1;
        }
    }
    return -1;
}

Code

int binarySearchNK(vector<int> &a, int key)
{
    bool desc = (a[0] > a[a.size() - 1]); // check
    int l = 0, r = a.size() - 1;
    while (l <= r){
        int mid = l + (r - l) / 2;
        if (a[mid] == key){
            return mid;
        }
        else if (a[mid] < key){
            (desc == true) ? r = mid - 1: l = mid + 1;
        }
        else{
            (desc == true) ? l = mid + 1 : r = mid - 1;
        }
    }
    return -1;
}