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

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace TwoSearch
    {
        
    class Data
        {
            
    int[] list;
            
    int lower; 
            
    int upper; 
            
    int middle;

            
    int count = 0//记录比较次数

            
    public Data(int max)
            {
                list 
    = new int[max];

                
    for (int i = 0; i < max; i++)
                {
                    list[i] 
    = i;
                }

                lower 
    = 0;

                upper 
    = list.Length - 1;
            }

            
    public int Find(int t)
            {
                
    while (lower <= upper) //必须要有"="号,否则某些数字可以查找,但无法输出
                {
                    count 
    = count + 1
                    middle 
    = (lower + upper) / 2;
                    
    if (t == list[middle])
                        
    return middle;
                    
    else if (t > list[middle])
                        lower 
    = middle + 1; //变更起始位置
                    
    else
                        upper 
    = middle; //变更总长度
                }
                    
    return -1//没找到
      
            }

            
    public void GetCount()
            {
                Console.WriteLine(
    "比较次数:" + count);
            }

            
    public void Size()
            {
                Console.WriteLine(
    "数组长度:"+upper);
            }

            
    /// <summary>
            
    /// 各项数组值
            
    /// </summary>
            public void Display()
            {
                
    for (int i = 0; i < upper; i++)
                {
                    Console.WriteLine(
    "值:"+list[i]);
                }
                Console.ReadLine();
            }
        }

        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    //此处注意数值不能越界
                Data data = new Data(100000);

                Console.WriteLine(
    "查找数字:"+data.Find(6));
                data.GetCount();
                data.Size();
                data.Display();
            }
        }
    }
  • 相关阅读:
    How to build Skia canvaskit
    c++ 多线程 并发 id generator 产生器
    c++ 多态 读书笔记
    c++ 各种奇门鬼爪的构造函数 和 类的初始化
    图说C++对象模型:对象内存布局详解 强烈推荐
    C++对象模型之RTTI的实现原理
    C++ cast static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符) 强烈推荐
    Markdown 语法
    vc 编译选项 忽略crash
    chromium 编译报错 You must installWindows 10 SDK version 10.0.19041.0 including the "Debugging Tools for Windows" feature.
  • 原文地址:https://www.cnblogs.com/scotly/p/1718716.html
Copyright © 2011-2022 走看看