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