Однако мое понимание бинарного поиска распространяется только на массивы целых, а не на структуры.
Алгоритм двоичного поиска не относится к какому-либо конкретному типу данных. Требуется только полное упорядочение объектов для поиска (что требует их сортировки) и их упорядочение в этом порядке. Возможно, вы реализовали это только за int
с в прошлом, но я склонен думать, что одной из целей этого упражнения является демонстрация общей применимости алгоритма двоичного поиска. Он работает для структур точно так же, как и для int
с, при условии, что у вас есть подходящее средство для вычисления относительного порядка пар структур - и вы делаете , потому что вам нужно просто такая вещь для выполнения своего рода.
Глядя на то, что я написал для бинарного поиска в прошлом, я сравниваю
середина моего массива с тем, что я ищу, однако, что
сравнение упало для упорядоченных пар.
Нет, это не так. Вы не можете выполнить сравнение со встроенными реляционными операторами С, но это не значит, что вы не можете сравнивать.
Я подозреваю, что вы слишком сосредоточены на конкретной прошлой реализации. Я надеюсь, что вас сначала обучили алгоритму, и только потом показали или побудили найти реализацию для int
s. Задача определяет соответствующий порядок упорядоченных пар. Используйте это.
Я не могу сказать, что один
заказанная пара «меньше» или «больше» другого, если я не сломаю
это вниз.
Ну да, вам нужно посмотреть на компоненты каждой пары, чтобы определить, какая из них "меньше". Так? Детали того, как вы принимаете это решение, не имеют значения, если вы получите правильный ответ. Это никоим образом не мешает реализации бинарного поиска, равно как это не делало (или должно было сделать) для реализации сортировки. Действительно, если вы написали функцию сравнения для использования в сортировке, то вы сможете повторно использовать эту же функцию для выполнения сравнений в бинарном поиске.