officialandrey
@officialandrey

Как «добавить/удалить» элемент массива?

Даны упорядоченные действительные числа A1, A2,..., An, натуральное число k и действительное число P. Удалить элемент с номером k и вставить в последовательность P, так, чтобы упорядоченность не нарушилась


Получилось сделать только для частного случая (под определенный массив). Если другой массив использовать, алгоритм уже не работает :(

Хелп:)
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 1
arusef
@arusef
Novice .NET dev
Осторожно, псевдокод.
Не проверял, но логика должна работать с любым входным массивом.

let input = [ a1, a2, ... , aN ] // ordered ascending, N > 1
let k, P // assume k > 0, 1-based indexing
// remove at k, 0-based indexing
for (let i = k; i < N; ++i)
   input[i - 1] = input[i]
// insert P preserving order
for (let i = N - 1; i >= 0; --i) {
   if (i == 0 || P >= input[i - 1]) {
      for (let j = N - 1; j > i; --j)
         input[j] = input[j-1]
      input[i] = P
      break
   } else continue
}
// finish
print(input)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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