Итак, этот код имеет странные выходные данные при работе в командной строке с различными выходными данными, в некоторых случаях я также получаю segfault (сброшенное ядро). Я подозреваю, что это связано с минимальными, максимальными, средними границами, которые я установил. Пожалуйста, помогите мне в том, что может пойти не так.
код ищется на основе двух векторов типа class (Book), где все три элемента ISBN, курс и тип должны совпадать для увеличения счетчика. Мы ищем номер р в п.
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;
}