Массив длины n может содержать значения 1,2,3 ... N ^ 2. Можно ли сортировать в O (n) время?

StackOverflow https://stackoverflow.com/questions/4238460

  •  26-09-2019
  •  | 
  •  

Вопрос

Учитывая массив длины n. Он может содержать значения от диапазона от 1 до n ^ 2 (n в квадрате) как включено, значения являются неотъемлемой. Можно ли сортировать этот массив в O (n) времени? Если возможно, как?

Редактировать: Это не домашнее задание.

Это было полезно?

Решение

Запишите каждое целое число в базе n, то есть каждый х может быть представлен как (x1, x2) с x = 1 + x1 + x2 * n. Теперь вы можете отсортировать его дважды с счетным сортом, один раз на X1 и один раз на X2, что привело к отсортированному массиву.

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

Да, вы можете, используя Radix Sort. с участием N. Ведра и два пропуска. По сути, вы относитесь к числам как имеющие 2 цифры в базе N..

Можно отсортировать любой массив целых чисел с четко определенным максимальным значением в O(n) Время с использованием A. Radix Sort.. Отказ Это, вероятно, является случай для любого списка целых чисел, которые вы столкнулись. Например, если вы сортировали список произвольных точек целых чисел, это не было бы правдой. Но все интегральные типы C имеют четко определенные фиксированные диапазоны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top