Итак, я разработал очередность приоритетов, используя Min Heap, и в соответствии с онлайн-учебниками для сортировки всего массива с использованием очереди приоритетов требуется время O (nlogn). Это происходит потому, что мы извлекаем «n» раз, и для каждого извлечения мы должны выполнить исправление приоритета, которое занимает время входа в систему. Следовательно, это невозможно.Какова временная сложность сортировки половины массива с использованием очереди приоритетов?
Однако, если я хочу только отсортировать половину массива каждый раз, будет ли это еще время O (nlogn)? Или это будет просто O (logn)? Причина, по которой я хочу сделать это, - это то, что я хочу получить элемент со средним приоритетом, и это похоже на единственный способ сделать это, используя очередь приоритетов, извлекая половину элементов, если нет более интуитивного способа получить элемент с средний приоритет в очереди приоритетов.
Вы имеете в виду (1) сортировку первой половины массива (2) нахождение упорядоченного порядка наименьших n/2 элементов в массиве или (3) просто поиск элемента n/2-smallest. Последнее можно сделать в O (log n), используя структуру данных сбалансированного двоичного дерева поиска. Для первых двух потребуется не менее O (n log n) time –