zoukankan      html  css  js  c++  java
  • [数据结构]二分查找

    #思路#

    二分查找适用于有序的顺序表,基本的思路是:首先将给定的关键字key与表array的中间位置的元素进行比较。如果相等,则查找成功,如果不相等,则查找的元素一定在表的前半部分或者后半部分。继续缩小范围到前半部分或者后半部分再进行同样的查找,直到找到为止,或者查完之后仍然没有找到元素。下面给出一次算法的查找过程实例:

    #实例#

    假设数组array为[7,10,13,16,19,29,32,33,37,41,43],要查找的元素为11:
    这里写图片描述
    #代码#

    #include <iostream>
    #include <vector>
    using namespace std;
    class Solution
    {
    public:
    	int binarySearch(vector<int> nums, int val)
    	{
    		int low = 0, high = nums.size() - 1, mid;
    		while (low <= high)
    		{
    			mid = (low + high) / 2;
    			if (nums[mid] == val)
    			{
    				return mid;
    			}
    			else if (nums[mid] > val)
    			{
    				high = mid - 1;
    			}
    			else
    				low = mid + 1;
    		}
    		return -1;
    	}
    };
    

    #复杂度#
    时间复杂度为O(log₂n),空间复杂度为O(1)

    https://github.com/li-zheng-hao
  • 相关阅读:
    两台centos,用yum install 安装,一台成功,一台失败
    django 删除默认app
    FFmpeg
    安装nginx
    django markdown格式化变量
    安装python3.8
    安装 docker
    Centos7 安装selenium webdriver环境
    收集网页数据方法
    logstash 6.3.2下载地址
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053670.html
Copyright © 2011-2022 走看看