Вставка числа в сортированный массив!

Я хотел бы записать часть кода для вставки числа в сортированный массив в соответствующем положении (т.е. массив должен все еще остаться отсортированным после вставки),

Моя структура данных не позволяет дубликаты.

Я планирую сделать что-то вроде этого:

  1. Найдите правильный индекс, куда я должен помещать этот элемент с помощью двоичного поиска
  2. Создайте пространство для этого элемента путем перемещения всех элементов от того индекса вниз.
  3. Поместите этот элемент там.

Есть ли какой-либо другой лучший путь?

5
задан unwind 7 June 2010 в 12:14
поделиться

3 ответа

Если у вас действительно есть массив, а не лучшая структура данных, это оптимально. Если у вас есть гибкость в реализации, взгляните на AA Trees - они довольно быстрые и простые в реализации. Очевидно, что занимает больше места, чем массив, и это не стоит того, если количество элементов недостаточно велико, чтобы заметить медлительность блита по сравнению с магией указателя.

6
ответ дан 14 December 2019 в 04:30
поделиться

Нужно ли все время полностью сортировать данные? В противном случае, если необходимо быстро получить доступ только к наименьшему или наибольшему элементу, Двоичная куча дает постоянное время доступа и время добавления и удаления для входа в систему. Более того, это может удовлетворить ваше условие, что память должна быть последовательной, так как вы можете реализовать BinaryHeap поверх массива (то есть, левый дочерний элемент array [2n + 1], правый дочерний элемент array [2n + 2]).

1
ответ дан 14 December 2019 в 04:30
поделиться

Реализация дерева на основе кучи будет более эффективной, если вы вставляете много элементов - log n для операций поиска / удаления и вставки.

1
ответ дан 14 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: