ВУЗ:
Составители:
Рубрика:
17
Удаление изменяет индексацию элементов, которые находятся после
удаляемого элемента. Однако если мы идем с конца, то эти элементы уже
просмотрены, поэтому изменение индексации не будет влиять на корректность
работы алгоритма.
Поэтому алгоритм будет выглядеть следующим образом:
for (int i = data.Length - 1; i >= 0; i--) {
if (data[i] == delValue) {
delByIndex(ref data, i);
}
}
Очевидно, что данный алгоритм будет выполняться быстрее первой
версии.
Плюсом такого подхода к реализации удаления по значению является то,
что в высокоуровневых языках операция удаления элемента по индексу, как
правило, уже есть, поэтому реализовать данное действие не сложно.
Однако минусом является то, что при каждом удалении создается копия
почти всего массива
. Т. е. если у нас K удалений, то K раз будет создана копия
N элементов (хотя если быть более точным, то в начале будет создана копия
N-1 элементов, потом N-2 элементов и т. д.).
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »
