二分法查询,只适合有序但不连序的队列的查找。

来源:互联网 发布:便楔式移动数据采集器 编辑:程序博客网 时间:2024/06/02 04:58

    static int[] array={1,2,5,4,7,8,9};
    public static void RunSnippet()
    {
        Console.WriteLine("fff");
        int pos =BinSearch(4);
        Console.WriteLine(pos);
    }
    /// <summary>
    /// 二分法查询,只适合有序但不连序的队列的查找。
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static int BinSearch(int key)
    {
        int mid=array.Length/2;
        if(key==array[mid])
            return mid;
        int start=0;
        int end=array.Length-1;
        while(start<=end)
        {
            mid=(end-start)/2+start;
            if(key<array[mid])
            {
               end=mid-1;   
            }
            else if(key>array[mid])
            {
               start=mid+1;   
            }
            else
            {
                return mid;   
            }
        }
        return -1;
    }