91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++二分查找函數怎樣處理重復值

c++
小樊
82
2024-07-21 02:40:57
欄目: 編程語言

在C++中,二分查找函數通常返回第一個找到的重復值的索引。如果要返回最后一個重復值的索引,可以稍作修改。以下是一個簡單的二分查找函數示例,它返回第一個找到的重復值的索引:

#include <iostream>
#include <vector>

int binarySearch(const std::vector<int>& arr, int target) {
    int left = 0;
    int right = arr.size() - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;

        if (arr[mid] == target) {
            // 找到目標值,繼續往左搜索
            right = mid - 1;
        } else if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    if (left < arr.size() && arr[left] == target) {
        return left;
    } else {
        return -1; // 沒有找到目標值
    }
}

int main() {
    std::vector<int> arr = {1, 2, 2, 3, 4, 5, 5, 5, 6};
    int target = 5;
    
    int result = binarySearch(arr, target);
    if (result != -1) {
        std::cout << "找到目標值在索引 " << result << std::endl;
    } else {
        std::cout << "未找到目標值" << std::endl;
    }

    return 0;
}

需要注意的是,如果要返回最后一個重復值的索引,可以將二分查找函數中的判斷條件稍作修改,具體根據需求來調整。

0
桃江县| 泌阳县| 桂平市| 盱眙县| 旌德县| 黄平县| 神木县| 小金县| 朝阳区| 高平市| 铜山县| 阿瓦提县| 双江| 贵定县| 灵山县| 外汇| 嘉黎县| 商南县| 敦煌市| 城固县| 阳山县| 项城市| 赣州市| 葫芦岛市| 江西省| 休宁县| 甘孜| 砀山县| 丰宁| 泌阳县| 阿坝县| 台州市| 勐海县| 龙门县| 大厂| 和龙市| 桃园县| 建瓯市| 两当县| 阳曲县| 明水县|