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

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _2分法
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] a = { 1,3,4,5,7,9,10,25};
                int destElement=10;
                int index = binarySearch(a, destElement);
                Console.WriteLine(destElement+"的下标的位置在"+index);
            }
            static int binarySearch(int[] a, int destElement)
            {
                int begin = 0;
                int end = a.Length - 1;
                while (begin <= end)
                {
                    int mid = (begin + end) / 2;
                    if (a[mid] == destElement)
                    {
                        return mid;
                    }//如果中间值大于目标元素,说明目标元素在中间元素的左边 则结束下标-1
                    else if (a[mid] > destElement)
                    {
                        end = mid - 1;
                    }//如果中间值小于目标元素,说明目标元素在中间元素的右边 则开始下标+1
                    else if (a[mid] < destElement)
                    {
                        begin = mid + 1;
                    }
                }
                return -1;
            }
        }
    }
    /*
     *  二分法查找是建立在已经排序的基础之上
     *  一下程序从小到大
     *  这个数组没有重复的元素
     *  1  3 5 9 11 13 56
     *  以上是一个已经排序了的数组找出13的下标
     *  int begin=0;
     *  int end=6;
     *  int mid=(6+0)/2=3;
     *  中间元素是a[3]=9<13
     *  
     *  说明13在a[3]的右边则结束不变
     *  begin=mid+1; 开始元素下标是4 a[4]=11
     *  end=6
     *  mid=(6+4)/2=5
     *  中间元素是a[5]=13  13==13 
     *  结果13的下标是5
     *  
     */
    

      次程序也可以运行递归 但是能用其他的方法就尽量不要使用递归.

  • 相关阅读:
    java中检测网络是否相通
    springBoot学习资料
    mybatis-Plus 增强版用法收藏
    idea生成springBoot 报错403
    java中所有开源注解收集
    JsonCpp操作数组对象
    第三方库 jsoncpp 读写json
    c++ 判断是64还是32位系统
    c++ 读写结构体到文件
    c/c++ 按照行读取文件
  • 原文地址:https://www.cnblogs.com/y112102/p/2974585.html
Copyright © 2011-2022 走看看