给定按升序排列的n个不同整数存于数组a[1:n]中,请设计O(log n)的算法找到下标i,1 ≤ i ≤ n,使得a[i] = i,如不存在这样的下标,则返回0。要求写出函数实现。函数原型如下:int find(int a[],int n); 正确的程序是()
A.int find (int [] a, int n) { int left = 1; int right = n ; int mid = ⌊(left + right)/2⌋; while (left <= right) { if (a[mid]="=" mid) return mid;> mid) right = mid – 1; else left = mid + 1; } return 0; }
B.int find (int [] a, int n) { int left = 1; int right = n ; while (left < right) { int mid = ⌊(left + right)/2⌋; if (a[mid] == mid) return mid; if (a[mid] > mid) right = mid – 1; else left = mid + 1; } return 0; }
C.int find (int [] a, int n) { int left = 1; int right = n ; while (left <= right) { if (a[mid]="=" mid) return mid;> mid) right = mid – 1; else left = mid + 1; int mid = ⌊(left + right)/2⌋; } return 0; }
D.int find (int [] a, int n) { int left = 1; int right = n ; while (left <= right) { int mid="⌊(left" + 2⌋; if (a[mid]="=" mid) return mid;> mid) right = mid – 1; else left = mid + 1; } return 0; }