C# 二分法查询代码

二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。

使用二分法的前提条件是:在有序数组中查找特定元素

 public static int SearchInsert(int[] nums, int target) {
        int start = 0;//开始索引
        int end = nums.Length - 1;//结束索引 
        int mid = 0;//取中间索引
        while (start <= end)
        {
            mid = start+(end - start) / 2;
            if (target == nums[mid]) { return mid; }
            
            if (target < nums[mid])
            {
                end = mid - 1;
            }
            else if (target > nums[mid])
            {
                start = mid + 1;
 
            }
        }
        return start;
 }

代码解析:

二分查找的思路是

1.定义查找范围。start, end 开始索引和结束索引

2.折半缩小查找范围即mid=start+(end - start) / 2;防止数值溢出

如果目标数大于对半的数,则要插入的数在对半的右边,则开始查找的范围就需要更改为 start=mid+1;即对半之后的下一个数

如果目标数小于对半的数,则要插入的数在对半的左边,则结束查找的范围就需要缩短到 end=mid-1;即对半的前一个数

3.折半一次还没有找到就需要再次进行折半,重复步骤2的操作

posted @ 2024-01-24 11:47  二零一七  阅读(24)  评论(0编辑  收藏  举报