二分法/折半法

來源:互聯網
上載者:User

折半尋找演算法

假如有序表的資料元素是按升序排列的。

對於給定值value,從有序表的中間位置開始比較,如果當前資料元素的關鍵字等於value,則尋找成功;

否則,若value小於當前資料元素的關鍵字,則在有序表的前半部分繼續尋找;

反之,則在有序表的後半部分繼續尋找,依此反覆進行,直到獲得尋找成功或不成功的結果。

 

int HalfSearch(int arr[],int value) //在arr數組中尋找value值
{
    int left=0;
    int right=N-1;        //N為arr數組中的元素個數
    int mid;
    bool find=false;    //找到value為true,否則為false
    while(left<=right && !find)  //迴圈條件
    {
        mid=(left+right)/2;
        if(value==arr[mid])//是否找到特定值
            find=true;
        else
        {
            if(value<arr[mid]) //判斷是否是中間值的大小然後尋找大的值還是小的值
                right=mid-1;
            else
                left=mid+1;
        }
    }
    if(find)
        return mid;
    else
        return -1;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.