Это не моя домашняя работа в школе. Это моя собственная домашняя работа, и я являюсь самообучающимися алгоритмами.
В Руководство по разработке алгоритмов, есть такой акциз
4-25 Предположим, что массив A [1..n] имеет только цифры из {1,.,, n ^ 2}, но не более, чем log log n этих чисел. Разработать алгоритм, который сортирует A по существу меньше O (n log n).
У меня есть два подхода:
Первый подход:
В основном я хочу сделать подсчет сортировки для этой проблемы. Я могу сначала просмотреть весь массив (O (N)) и поместить все различные числа в массив размера loglogN (int [] K).
Затем примените сортировку counting. Однако при настройке счетного массива (int [] C) мне не нужно устанавливать его размер как N ^ 2, вместо этого я также устанавливаю размер как loglogN.
Но таким образом, при подсчете частот каждого отдельного числа, я должен сканировать массив K, чтобы получить этот индекс элемента (O (NloglogN), а затем обновить массив C.
Второй подход:
Опять же, мне нужно отсканировать весь массив, чтобы получить отдельный массив чисел K с размером loglogN.
Затем я просто делаю вид быстрой сортировки, но раздел основан на медиане массива K (т.е. каждый раз, когда стержень является элементом массива K), рекурсивно.
Я думаю, что этот подход будет лучшим, с O (NlogloglogN).
Я прав? или есть лучшие решения?
Подобные акцизы существуют в Руководстве по проектированию алгоритмов, например
4-22 Покажите, что n положительных целых чисел в диапазоне от 1 до k можно сортировать по времени O (n log k). Интересным случаем вл етс, когда k < п.
4-23 Мы стремимся сортировать последовательность S из n целых чисел со многими дублированиями, так что число различных целых чисел в S равно O (log n). Дайте алгоритм наихудшего временного времени O (n log log n) для сортировки таких последовательностей.
Но в основном для всех этих акцизов, мой интуитивный всегда думал о подсчете сортировки, поскольку мы можем знать диапазон элементов, а диапазон достаточно короток по сравнению с длиной всего массива. Но после более глубокого размышления, я думаю, что акцизы ищут, это второй подход, верно?
Спасибо