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

溫馨提示×

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
锡林浩特市| 屯昌县| 博乐市| 瓦房店市| 四平市| 土默特右旗| 海盐县| 宝丰县| 栾川县| 元江| 崇义县| 阿坝| 株洲县| 阿拉善盟| 清水河县| 万州区| 庄浪县| 陇南市| 方山县| 鄂伦春自治旗| 镇远县| 天气| 武邑县| 沈阳市| 嵊泗县| 沛县| 麻阳| 黄大仙区| 黔东| 琼海市| 湘潭县| 临汾市| 同江市| 嘉黎县| 江门市| 永泰县| 屯门区| 柘荣县| 通渭县| 和平区| 罗江县|