[英]How to find an element in a sorted array such that all the elements after it are greater than a given value?
我試圖通過修改二進制搜索算法來實現它。
int search(int *a, int start,int end,int sum){
int s=start,e=end-1,m;
while(s <= e){
m=s+(e-s)/2;
if(a[m] == sum){
return m+1;
}
else if (a[m] < sum) {
s = m + 1;
}
else {
e = m - 1;
}
}
return m;}
上面的算法有什么問題?
int search(int *a, int start,int end, int sum) {
int s = start, e = end - 1, m;
while(s <= e) {
更簡單的是
// m=s+(e-s)/2;
m=(s+e)/2;
你必須不斷循環,也許有重復的元素
// if(a[m] == sum){
// return m+1;
// } else
注意條件已更改為<=
// if (a[m] < sum) {
if (a[m] <= sum) {
s = m + 1;
}
else {
e = m - 1;
}
}
不得不返回s
這里
// return m;
return s;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.