zoukankan      html  css  js  c++  java
  • 二分搜索算法

    二分搜索用于在已经排序好的集合中搜索值,每次与中间值对比,小于则搜索前半段,大于中间值则在后半段,继续二分搜索,实现代码:

            /// <summary>
            /// 二分查找
            /// </summary>
            /// <param name="arr">已经排序过的数组</param>
            /// <param name="searchkey">搜索值</param>
            /// <returns></returns>
            private static int BinarySearch(int[] arr, int searchkey)
            {
                int start = 0;
                int end = arr.Length - 1;
    
                int mid = 0;
                while (start <= end)
                {
                    mid = (start + end) / 2;
                    if (arr[mid] < searchkey) //中间值小于 搜索值,说明要查找值在尾部
                    {
                        start = mid + 1;
                    }
                    else if (arr[mid] > searchkey)//中间值大于搜索值,说明要搜索值在首部
                    {
                        end = mid - 1;
                    }
                    else
                    {
                        return mid;
                    }
                }
                return -mid;
            }

    如果查询不到值返回的是负的最后查询的中间值的位置,负值变正后+1 则可用来有序插入搜索值,使列表保持排序。

  • 相关阅读:
    LR12_IE11报错,闪退
    loadrunner11无法启动IE9
    启动数据库失败
    测试代码
    python中的JSON(1)
    文件和异常(二)
    文件和异常(一)
    类(三)
    类(二)
    初识类(一)
  • 原文地址:https://www.cnblogs.com/tangchun/p/10195124.html
Copyright © 2011-2022 走看看