C++ 二分查找算法


#include<iostream>
using namespace std;

//二分查找法,查找一個數組的元素,並返回所在的位置的下標,
//必須要是一個有序的數組,
int select_arr(int arr[], int len, int arr_value)
{
    while (1)
    {
        int left = 0;  //數組的左側下標
        int right = len-1; //數組的右側下標
        while (left <= right)  
        {
            int mid = (left + right) / 2;  //定義中間位的下標
            int mid_value = arr[mid];  //定義中間值的基准值
            if (mid_value == arr_value)  //如果基准值正好等於要查找的值,則自動返回要找的位置
            {
                return mid;
            }
            //如果基准值大於要查找的值,表明值在左半邊,新的查找范圍為中間值-1位,也就是mid-1
            else if (mid_value > arr_value)
            {
                right = mid - 1;
            }
            //如果基准值小於要查找的值,表明值在右半邊,新的查找范圍為中間數+1位,也就是mid+1;
            else if (mid_value < arr_value)
            {
                left = mid + 1;
            }
        }
        return -1;
    }
}


int main()
{
    //定義一個int數組,並使用二分查找元素
    int arr[10] = { 1, 3, 5, 7, 9, 10, 16, 46, 88, 91 };
    
    int weizhi=select_arr(arr, 10, 16);


    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM