• 二分搜索算法


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

            /// <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 则可用来有序插入搜索值,使列表保持排序。

  • 相关阅读:
    七。进度管理
    六。质量管理
    五。项目范围管理
    四。项目整体管理
    三。项目立项管理
    二。项目的一般只知识
    一。项目管理的管理领域
    8.BGP
    英语词汇基础
    vim中输入tab符
  • 原文地址:https://www.cnblogs.com/tangchun/p/10195124.html
Copyright © 2020-2023  润新知