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

    1、仅 当 列表 是 有序 的 时候, 二分 查找 才 管用。

    2、一般而言, 对于 包含 n 个 元素 的 列表, 用 二分 查找 最多 需要 log2n 步, 而 简单 查找 最多 需要 n 步。

     class Program
        {
            static void Main(string[] args)
            {
                int[] arr =new int[]{ 1,3,5,7,9,11,28,32,43,57,69,74,82,98,108,231,456 };
                Dichotomy(arr);
                Console.ReadKey();
            }
    
            public static void Dichotomy(int[] arr)
            {
                Console.WriteLine("请输入数字:");
                string itemStr = Console.ReadLine();
                int item = 0;
                try
                {
                    item = Convert.ToInt32(itemStr);
                    int mid = 0;
                    int low = 0;
                    int high = arr.Length - 1;
    
                    //只要范围没有缩小到只包含一个元素
                    while (low <= high)
                    {
    
    
                        mid = (low + high) / 2;//获取中间的元素
                        Console.WriteLine($"low:{low}high:{high}mid:{mid}");
                        int guess = arr[mid];
                        if (guess == item)
                        {
                            Console.WriteLine($"数字{item}在数组的第{mid}位置上");
                            break;
                        }
                        //猜测的数字大了
                        if (guess > item)
                        {
                            high = mid - 1;
                        }
                        else if (guess < item)
                        {
                            low = mid + 1;
                        }
    
                    }
                    if (low > high)
                    {
                        Console.WriteLine($"此数组不包含数字:{ itemStr}");
                    }
                }
                catch (Exception)
                {
    
                    Console.WriteLine("您输入的不是数字,请重新输入");
                    Dichotomy(arr);
                }
               
    
            }
        }
  • 相关阅读:
    OC基础框架
    协议代理
    内存管理
    重写init或自定义init方法
    iOS输入框UITextField输入限制
    iOS 打包FrameWork
    iOS 持续往文件写入数据。
    ld: library not found for -lxxx 问题的解决办法
    iOS 侧滑返回过程中导航栏的黑色问题解决办法
    iOS 蓝牙分包发送数据
  • 原文地址:https://www.cnblogs.com/25miao/p/10644400.html
Copyright © 2011-2022 走看看