这个题目有两种解法,一直是调用map库来开一个map,第二种方法是创建一个结构体,然后先排序再进行二分查找。
这里先说代码二:先复习一下二分查找:
int bsearchWithoutRecursion(node c[],int low,int high,int target)
{
while(low<=high)
{
int mid=low+(high-low)/2;/*使用(low+high)/2会有整数溢出的问题
(问题会出现在当low+high的结果大于表达式结果类型所能表示的最大值时,
这样,产生溢出后再/2是不会产生正确结果的,而low+((high-low)/2)
不存在这个问题*/
if(c[mid].x>target)
high=mid-1;
else if(c[mid].x<target)
low=mid+1;
else
return mid;
}
return-1;
}
排序用到sort函数,具体用法为sort(a+1,a+n+1,cmp)//这里cmp为bool类型要提前定义
具体代码如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>