作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
template <class T, class C>
size_t idx(const std::vector< T >& elements, const C& val)
{
if (val<elements[0]||val==elements[0])
return 0;
int s=elements.size();
if (val>elements[s-1])
return s;
int min=0;
int max=s-1;
int mid;
while (max >= min){
mid=(max+min)/2;
if (val<elements[min])
return min;
else if (val>elements[max])
return max+1;
else if((val==elements[mid])||((val>elements[mid-1])&&(val<elements[mid])))
return mid;
else if((val>elements[mid])&&(val<elements[mid+1]))
return mid+1;
else if (val>elements[mid+1])
min=mid+1;
else
max=mid-1;
}
return max;
}
这与btree
有关。元素 vector 被排序。我想在这个 vector 上找到插入点,如果值恰好在 vector 中,则返回它的索引。此外,例如,大小为 7 的 vector 上有 8 个插入点。我一直遇到段错误,我认为这可能是一个:因一个错误或类似错误而关闭,有人可以帮忙吗?谢谢。
最佳答案
如果 vector 大小为 2,则 min == mid == 0
和 max == 1
。在代码中,您检查 mid - 1
处的元素,即 -1
,因此您的程序表现出未定义的行为。
关于c++ - 对排序 vector 进行二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810907/
我正在尝试编写一个程序,在名为 items 的数组中进行顺序搜索和二分搜索,该数组具有 10000 个已排序的随机 int 值。第二个名为 targets 的数组加载了 1000 个 int 值(50
当我尝试使用图表并为其编写一些代码但没有成功时,我遇到了一个问题:/!! 我想创建一些东西来获取图形数据并检查它是否:1- 连接2-二分法3-有循环4-是一棵树 所以我想知道,例如,是否可以将其写入以
我是一名优秀的程序员,十分优秀!