zoukankan      html  css  js  c++  java
  • 二分查找(折半查找)

    非递归写法:

                public static int search(int left, int right, int[] array, int key)
                {
    
                    int mid = (left + right) / 2;
                    //不在当前搜索集里面
                    if (key < array[0] || key > array[array.Length - 1])
                    {
                        return -1;
                    }
                    while (left <= right)
                    {
    
                        if (array[mid] == key)
                        {
                            return mid;
                        }
                        else if (array[mid] > key)
                        {
                            right = mid - 1;
                        }
                        else
                        {
                            left = mid + 1;
                        }
                    }
                    return -1;
                }

    递归写法:

       public static int search(int left, int right, int[] array, int key)
                {
                    int mid = (left + right) / 2;
                    //不在当前搜索集里面
                    if (key < array[0] || key > array[array.Length - 1])
                    {
                        return -1;
                    }
                    while (left <= right)
                    {
    
                        if (array[mid] == key)
                        {
                            return mid;
                        }
                        else if (array[mid] > key)
                        {
                            return search(left,mid-1,array,key);
                        }
                        else
                        {
                            return search(mid+1,right,array,key);
                        }
                    }
                    return -1;
                }

    Main函数:

     public static void Main()
                {
                    int[] array = { 10, 14, 16, 18, 25, 30, 45, 65, 76, 81, 90, 102, 156 };
                    foreach(int a in array)
                    {
                        Console.Write(a+" ");
    
                    }
                    Console.WriteLine();
                    Console.WriteLine("查找10000:"+search(1,array.Length,array,10000));
                    Console.WriteLine("查找5:" + search(1,array.Length,array, 5));
                    Console.WriteLine("查找18:" + search(1, array.Length , array, 18));
                    Console.ReadKey();
                }
  • 相关阅读:
    【Rust】匹配绑定
    【Rust】iflet
    【Rust】结构体匹配
    【Rust】闭包
    【Rust】函数
    【Rust】方法
    【Rust】whilelet
    【Rust】匹配保护
    【Rust】闭包捕获变量
    优先队列 安静点
  • 原文地址:https://www.cnblogs.com/tiancaige/p/13432887.html
Copyright © 2011-2022 走看看