數據結構——折半查找

採用線性方式進行折半查找:

Binary_Search(int arr[],int key,int lowIndex,int upperIndex)
{
    int middleIndex = 0;
    while(lowIndex <= upperIndex)
    {
        middleIndex = lowIndex + (upperIndex - lowIndex) / 2;
        if(arr[middleIndex] == key)
        {
            return middleIndex;
        }
        if (key > arr[middleIndex])
        {
            lowIndex = middleIndex + 1;
        }
        else
        {
            upperIndex = middleIndex - 1;
        }
    }

    return -1;
}

採用遞歸方式進行折半查找:

Binary_Search_Recursive(int arr[],int key,int lowIndex,int upperIndex)
{
    if (lowIndex <= upperIndex)
    {
        int middleIndex = lowIndex + (upperIndex - lowIndex) / 2;
        if(arr[middleIndex] == key)
        {
            return middleIndex;
        }
        else if(arr[middleIndex] < key)
        {
            lowIndex = middleIndex + 1;
            Binary_Search_Recursive(arr,key,lowIndex,upperIndex);
        }
        else
        {
            upperIndex = middleIndex - 1;
            Binary_Search_Recursive(arr,key,lowIndex,upperIndex);
        }
    }
    else
    {
        return -1;    
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章