查找算法——二分查找

二分查找,也稱折半查找
目的:提高查找速度(當查找性能成為問題時,考慮使用二分查找)

使用前提:(較為嚴格)
已經排好序(升序或降序)的數組

算法思想
每次跟中間元素mid比較,如小于mid,則在前半部分;若大于mid,則在后半部分,若等于mid,則查找完成。

示例代碼

//增序排列的二分查找
int bin_find(const int arr[], int len, int val)
{
    int low = 0;
    int hight = len - 1;
    while (low<=hight)
    {
        int mid = (hight + low) / 2; //中間位置
        if (arr[mid] == val)
        {
            return mid;//找到了
        }
        else if(arr[mid]>val)
        {
            hight = mid - 1;//比中間項小,則在左側
        }
        else
        {
            low = mid + 1;//比中間項大,則在右側
        }
    }
    return -1;
}

int main()
{
    int data[8] = { 54,0xa1,0x7f,12,10,9,98,119 };

    int bin_num = bin_find(data, 8, 12);

    return 0;
}
  • 與遍歷查找比較
    查找速度優于遍歷查找,
    最多查找log2(N)次
    最少查找1次

??


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容