Как отсортировать массив из N элементов, где каждое целое число принадлежит множеству {1,2,3,,,k}, используя оракул, который отвечает да и нет?

Массив состоит из n элементов, и каждый элемент является целым числом из набора {1,2,3,,,,k}. Существует оракул, который отвечает на все, что касается массива, да или нет. У вас есть доступ только к оракулу, а не к массиву. Покажите, что массив можно отсортировать не более чем по O(klog(n)) запросам.

Определите «что-нибудь о массиве». Что, если я спрошу: «Сколько элементов в массиве имеют значение 1?»? Ответит да или нет?

Maurycyt 16.03.2022 20:16

Когда сортировка массив, мы должны сдача его (скажем, поменять местами элементы); как мы можем это сделать, если у нас нет доступа к массиву, но к оракулу, который может только вопросы отвечать?

Dmitry Bychenko 16.03.2022 20:23

Знаете ли вы, что k стоит в начале проблемы?

Mark Ransom 16.03.2022 20:29
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
3
3
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы знаете все возможные значения в массиве, достаточно найти частоту каждого возможного значения. Затем выведите правильное количество единиц, правильное количество двоек и т. д.

Вы можете добиться этого в запросах Theta(k log n), во всех формах:

  • «Частота элемента x больше, чем c

Это равносильно выполнению бинарного поиска для каждой из k частот. Поскольку частота каждого элемента является целым числом в [0, n], вы можете выполнить этот бинарный поиск не более чем с log_2(n+1)+1 запросами.

Другие вопросы по теме