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
  • 相关阅读:
    WPF之长短
    MFC程序和Win32程序的关系
    .NET Framework/CLR之长短
    常用软件
    经典推荐.Net面试法宝
    socket编程原理
    常用开发工具
    Get和Post方法的区别
    MAC IP等相关
    Datagrid为什么不自动换行显
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053670.html
Copyright © 2011-2022 走看看