#include
using namespace std;
const int N = 1e6 + 10;
int n;
int a[N];
bool binarySearch(int a[], int x, int left, int right, int &i, int &j) {
cin >> x;
while (left < right) {
int mid = left + right >> 1;
if (a[mid] >= x) right = mid;
else left = mid + 1;
}
if (a[left] != x) {
i = left - 1;
j = left;
return false;
}
else {
i = j = left;
return true;
}
}
int main() {
cin >> n;
for (int i = 0;i < n;i++) cin >> a[i];
int x, i, j;
bool binarySearch(a, x, 0, n - 1, i, j);
cout << "("<< i <<","<< j << ")";
return 0;
}
代码逻辑不关注的话,至少编译不报错:
能看出你是不了解每行代码干嘛,不理解代码的含义直接在抄代码吧。
全局变量的使用,函数调用的方式,函数传参的方式,更多的是你的笔误问题。
太基础,然后可能也是笔误比较多,你再调一下,然后思路有不懂的可以问。
#include <iostream>
#include <memory>
using namespace std;
const int N = 1e6 + 10;
int n;
int a[N];
bool binarySearch(int a[], int x, int left, int right, int& i, int& j) {
cin >> x;
while (left < right) {
int mid = left + right >> 1;
if (a[mid] >= x) right = mid;
else left = mid + 1;
}
if (a[left] != x) {
i = left - 1;
j = left;
return false;
}
else {
i = j = left;
return true;
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
int x, i, j;
binarySearch(a, n, 0, n - 1, i, j);
cout << "(" << i << "," << j << ")";
return 0;
}