- 二分法
//示例算法输出的是下标
#includeusing namespace std; template int BinarySearch(Type a[],const Type& x,int n){ int left, right, mid; left = 0; right = n - 1; while(left <= right){ mid = (left + right) / 2; if(x == a[mid]) return mid; if(x < a[mid]) right = mid - 1; else left = mid + 1; } return -1; } int main(){ int n, x; cin >> n >> x; int a[n]; for(int i = 0; i < n; i++) cin >> a[i]; cout << BinarySearch(a, x, n); }
输入样例:
5 2 1 2 3 4 5
输出样例:
1



