二进制搜索的奇怪输出

时间:2019-10-10 02:57:26

标签: c++11 binary-search

因此,当在带有不同输出的命令行上运行时,此代码具有奇怪的输出,在某些情况下,我还会遇到段错误(内核已转储)。我怀疑这与我设置的最小,最大,中界有关。请帮我解决可能出现的问题。

代码正在基于类型为Book的两个向量进行搜索,其中所有三个元素ISBN,课程和类型都需要匹配,以使计数器递增。我们正在搜索n中的r数。

  int binary_search(std::vector<Book> n, std::vector<Book> r){
  std::sort(n.begin(),n.end());
  unsigned int mid;
  int count  = 0 ;
  for (unsigned int i = 0; i < r.size(); i++) {
    unsigned int min = 0 ;
    unsigned int max = n.size() - 1;
    while(max >= min) {
      mid = (max + min) / (2);
      if((n[mid].isbn == r[i].isbn) &&  (n[mid].course == r[i].course) && (n[mid].type == r[i].type)) {
        count++;
        break;
      } else if(n[mid].isbn < r[i].isbn){
        min = mid + 1;
      } else{
        max = mid - 1;
      }
    }
  }
  return count;

}

0 个答案:

没有答案