zoukankan      html  css  js  c++  java
  • [去哪儿网]二分查找

    时间限制:3秒 空间限制:32768K 热度指数:46596
    本题知识点: 查找

    题目描述

    对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。

    给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。

    测试样例:
    [1,3,5,7,9],5,3
    返回:1
     1 #include <iostream>
     2 using namespace std;
     3 
     4 class BinarySearch {
     5 public:
     6     int getPos(vector<int> A, int n, int val) {
     7         // write code here
     8         if(A.empty()==true)
     9             return -1;
    10         
    11         int start=0;
    12         int end=A.size()-1;
    13         
    14         
    15         while(start<=end)
    16             {
    17                 int mid=(start+end)/2;
    18             
    19                 if(val<A[mid])
    20                 {
    21                     end=mid-1;
    22                 }
    23                 else if(val>A[mid])
    24                     {
    25                         start=mid+1;
    26                 }
    27                else{
    28                    if((mid-1)>=0&&A[mid-1]==val)
    29                     return mid-1;//重复出现返回第一次出现的位置
    30                   else
    31                     return mid;
    32                }
    33             
    34         }
    35         return -1;
    36         
    37     }
    38 };
  • 相关阅读:
    中国国家气象局天气预报信息接口
    windows文件同步到linux
    页面元素自适应
    js对浮点数计算的bug
    ajax跨域报错
    html5使用js确定用户坐标位置
    linux下rsync服务的搭建
    linux基本指令
    js控制页面刷新大全
    pdf在浏览器的显示问题
  • 原文地址:https://www.cnblogs.com/bxyan/p/6907408.html
Copyright © 2011-2022 走看看