亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C#中二分查找的實現技巧有哪些

c#
小樊
83
2024-09-16 09:15:29
欄目: 編程語言

在C#中,實現二分查找可以使用以下技巧:

  1. 確保數組已排序:二分查找算法要求輸入的數組是有序的。如果輸入的數組未排序,需要先對其進行排序。

  2. 使用while循環:在實現二分查找時,可以使用while循環來代替遞歸,這樣可以避免遞歸帶來的性能開銷。

  3. 定義左右邊界:在二分查找中,需要定義兩個變量left和right來表示當前搜索范圍的左右邊界。初始時,left為0,right為數組長度減1。

  4. 計算中間位置:在每次循環中,計算當前搜索范圍的中間位置mid = (left + right) / 2。注意,這里需要防止整數溢出,可以使用mid = left + ((right - left) >> 1)來計算。

  5. 比較目標值與中間值:根據目標值與中間值的大小關系,更新搜索范圍的左右邊界。如果目標值等于中間值,說明已經找到目標值,返回中間位置。如果目標值小于中間值,說明目標值在左半部分,更新右邊界為mid - 1。如果目標值大于中間值,說明目標值在右半部分,更新左邊界為mid + 1。

  6. 判斷搜索范圍是否為空:在每次循環結束時,判斷搜索范圍是否為空,即判斷left是否大于right。如果為空,說明沒有找到目標值,返回-1。

下面是一個簡單的二分查找實現:

public int BinarySearch(int[] nums, int target)
{
    int left = 0;
    int right = nums.Length - 1;

    while (left <= right)
    {
        int mid = left + ((right - left) >> 1);

        if (nums[mid] == target)
        {
            return mid;
        }
        else if (nums[mid]< target)
        {
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }

    return -1;
}

這個實現適用于整數數組,如果需要處理其他類型的數組,只需修改數組類型和比較操作即可。

0
永新县| 康保县| 牟定县| 朝阳县| 本溪市| 彩票| 宁远县| 武城县| 阜新| 九江县| 台南市| 东海县| 咸阳市| 镶黄旗| 电白县| 砚山县| 临洮县| 南投市| 克拉玛依市| 辉南县| 射阳县| 原阳县| 广元市| 临沧市| 洛扎县| 宜宾市| 石棉县| 武城县| 佳木斯市| 南陵县| 扬中市| 莱阳市| 永新县| 永和县| 娱乐| 庄浪县| 定南县| 新乐市| 张家界市| 徐汇区| 武隆县|