Странные выходы с бинарным поиском - PullRequest
0 голосов
/ 10 октября 2019

Итак, этот код имеет странные выходные данные при работе в командной строке с различными выходными данными, в некоторых случаях я также получаю 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;

}
...