题目:
第三题,二分查找
首先你要知道二分查找的条件是,查找的数组必须是单调的
#include <iostream>
using namespace std;
int main()
{
int a[500];
int n,x;
while(cin>>n>>x)
{
for(int i = 0; i < n; i++) cin>>a[i];//默认由小到大
int left = 0,right = n-1, ans = -1;
while(left <= right)
{
int mid = (left + right)/2;
if(a[mid] >= x)
{
ans = a[mid];
right = mid - 1;
}
else {
left = mid+1;
}
}
if(ans == -1) cout<<"没找到"<<endl;
else cout<<ans<<endl;
}
return 0;
}
最后一题排序a + b > b +a
比如a = 99, b = 91,那么组合9991 > 9199
这里介绍一下STL里面的sort()排序,如果你要将数组a从小到大排序就写sort(a,a+n),他默认是从小到大排序,如果从大到小sort(a,a+n,greater<int>() )就行
还有自定义的排序,这里就用自定义排序,具体请自行百度sort()用法