寻找 n 个元素中第 k 小元素问题中,如快速排序算法思想,运用分治算法对n个元素进行划分,如何选择划分基准下面( )答案解释最合理。
A. 随机选择一个元素作为划分基准
B. 取子序列的第一个元素作为划分基准
C. 用中位数的中位数方法寻找划分基准
D. 以上皆可行。但不同方法,算法复杂度上界可能不同
对于下列二分查找算法,以下正确的是( )。
A. int binarySearch(int a[], int n, int x){int low=0, high=n-1;while(low<=high){int mid=(low+high)/2;if(x==a[mid]) return mid;if(x>a[mid]) low=mid;else high=mid;}return –1;}
B. int binarySearch(int a[], int n, int x){int low=0, high=n-1;while(low+1!=high){int mid=(low+high)/2;if(x>=a[mid]) low=mid;else high=mid;}if(x==a[low]) return low;else return –1;}
C. int binarySearch (int a[], int n, int x){int low=0, high=n-1;while(low D. int binarySearch(int a[], int n, int x){if(n > 0 && x >= a[0]){int low = 0, high = n-1;while(low < high){int mid=(low+high+1)/2;if(x < a[mid])high=mid-1;else low=mid;}if(x==a[low]) return low;}return –1;}