簡體   English   中英

計算兩個數組中元素的二進制搜索邏輯(GFG)

[英]Binary search logic for Counting elements in two arrays(GFG)

我正在使用此邏輯在排序數組 b[] 中查找小於或等於 x 的元素。 但是,它不適用於某些測試用例。

int binary_search(int x, int b[], int b_size)
{
    int low = 0;
    int high = b_size-1;
    
    
    while(low<=high)
    {
        int mid = low + (high-low)/2;
        
        if(b[mid]<=x && b[mid+1]>x) return mid;
        else if(b[mid]>x) high = mid-1;
        else low = mid+1;
    }
}

在尋找解決方案后,我發現了以下邏輯。 有人可以告訴我我的邏輯和這個邏輯有什么區別嗎?

int binary_search(int arr[], int l, int h, int x)
{
    while (l <= h) {
        int mid = (l + h) / 2;
 
        // if 'x' is greater than or equal to arr[mid],
        // then search in arr[mid+1...h]
        if (arr[mid] <= x)
            l = mid + 1;
 
        // else search in arr[l...mid-1]
        else
            h = mid - 1;
    }
 
    // required index
    return h;
}

在您的代碼中,您沒有考慮 mid+1 可以等於 b_size,假設 b_size=1 然后 mid=0 和 mid+1=1,這意味着您正在檢查索引 1 處的值,即 b[1]數組 b 越界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM