zoukankan      html  css  js  c++  java
  • 数据结构与算法之二分查找

    概念

        二分查找又称折半查找,它是一种效率较高的查找方法。它的时间复杂度为O(logn)

        二分查找要求:有序的线性表

    基本思想

        二分查找的基本思想是划分当前查找区间,区间的范围一步一步的缩小,如果找到直接返回,反之直到区间只有一个元素时停止

    实现

        设R为一个值递增的有序线性表

        实现步骤:

    • 首先确定该区间的中点位置:mid=[(low+high)/2]
    • 然后将key值与R[mid]的值比较:若相等,则直接返回当前mid,否则进行确定新的区间操作,这分为两种情况

        ①R[mid]>key则表明key在区间的左边,所以low不变,high=mid-1

        ②R[mid]<key则表明key在区间的右边,所以high不变,low=mid+1

    • 如果没有找到则返回-1

        代码实现:

            public int BinSearch(int[] array, int key)
            {
                int low = 0, high = array.Length - 1, mid;
    
                while (low <= high)
                {
                    mid = (low + high) / 2;
                    int curValue = array[mid];
    
                    if (curValue == key)
                        return mid;
    
                    if (curValue > key)
                    {
                        high = mid - 1;
                    }
                    else
                    {
                        low = mid + 1;
                    }
                }
    
                return -1;
            }
  • 相关阅读:
    每日日报
    HTML相关
    60-Shiro功能扩展(记住我)
    60--Shiro安全框架
    服务器项目部署简单操作
    61--DB项目--修改密码模块设计
    59-SpringAOP --Cache操作(注解)
    58-Spring AOP 异步操作
    58-Spring-AOP事务管理
    Terminal 执行 java 命令
  • 原文地址:https://www.cnblogs.com/Khadron/p/5344491.html
Copyright © 2011-2022 走看看