基於以下定義中找到here的C實現LOWER_BOUND
返回指向 第一個元素在排序範圍 一個迭代[第一,最後一個)不大於比較值 以下。比較結果爲 ,使用<爲 第一個版本,或者爲第二個版本使用comp。
什麼是lower_bound()的C等價實現。我知道這將是對二分查找的修改,但似乎無法精確確定實施。
int lower_bound(int a[], int lowIndex, int upperIndex, int e);
樣本案例:
int a[]= {2,2, 2, 7 };
lower_bound(a, 0, 1,2) would return 0 --> upperIndex is one beyond the last inclusive index as is the case with C++ signature.
lower_bound(a, 0, 2,1) would return 0.
lower_bound(a, 0, 3,6) would return 3;
lower_bound(a, 0, 4,6) would return 3;
我試圖代碼如下:
int low_bound(int low, int high, int e)
{
if (low < 0) return 0;
if (low>=high)
{
if (e <= a[low]) return low;
return low+1;
}
int mid=(low+high)/2;
if (e> a[mid])
return low_bound(mid+1,high,e);
return low_bound(low,mid,e);
}
如果你看看你的鏈接頁面上低一點,還有,你可以學習的實現。 –
問題到底是什麼? –
確切的實現不是由C++標準指定的。 –