zoukankan      html  css  js  c++  java
  • C# 二分查找法

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

    A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;

    B 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。

    C 如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

            public int Search()
            {
                int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; int target = 4;
                int lo = 0, hi = nums.Length - 1;
                while (lo <= hi)
                {
                    var mid = (lo + hi) / 2; //此处为核心 每次减半去找
                    if (target == nums[mid]) return mid;
    
                    if (nums[mid] < nums[hi])
                    {
                        if (nums[mid] < target && target <= nums[hi])
                        {
                            lo = mid + 1;
                        }
                        else
                        {
                            hi = mid - 1;
                        }
                    }
                    else
                    {
                        if (nums[lo] <= target && target < nums[mid])
                        {
                            hi = mid - 1;
                        }
                        else
                        {
                            lo = mid + 1;
                        }
                    }
                }
                return -1;
            }
    

      

    云在青天水在瓶
  • 相关阅读:
    js项目练习第二课
    js项目练习第一课
    进度条
    js基础
    反射
    递归函数与三级菜单
    mybatis 动态SQL
    java 面对对象(抽象 继承 接口 多态)
    java Eclipse debug技巧
    mybatis 调用存储过程
  • 原文地址:https://www.cnblogs.com/flms/p/14841283.html
Copyright © 2011-2022 走看看