Удаление нескольких элементов из массива. Удалить из массива все элементы, значение которых равно максимальному

Решение:

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

Для решения этой задачи нам не нужен номер максимального элемента, а нужно знать значение. После того, как значение максимального элемента определено, просмотрим массив с конца и, если элемент имеет максимальное значение, то удалим его, при этом значение счетчика k будем увеличивать на 1.

После выполнения программы k будет равно количеству удаленных элементов, поэтому на экран будем выводить n-k элементов, где n – это количество элементов в исходном массиве.

Рассмотрим удаление нескольких максимальных элементов из массива целых чисел для n=10.

Пусть массив содержит следующие элементы:

6, 3, 4, 7, 11, 2, 13, 8, 13, 5.

Значение максимального элемента равно max=13. Будем просматривать массив с конца, изменяя индекс массива i от n до 1. На каждом шаге будем проверять условие: если i-й элемент равен max, то сдвинем все элементы, начиная с i до (n-1)-го на одну позицию влево, последнему элементу присвоим значение 0 и увеличим счетчик на 1 (k:=k+1).

После выполнения программы, мы получим массив вида:

6, 3, 4, 7, 11, 2, 8, 5, 0, 0.

Значение счетчика будет равно k=2. Остается вывести на экран n-k элементов (в нашем случае 8-2): 6, 3, 4, 7, 11, 2, 8, 5.

Вставка элемента в массив. Вставлять элемент можно до или после данного элемента, номер которого можно задать с клавиатуры или искать при определенных условиях.

1) Рассмотрим вставку элемента в массив после элемента с заданным номером, номер этого элемента введем с клавиатуры.

Решение:

Пусть k – это номер элемента, после которого мы должны вставить элемент x (k и x будем вводить с клавиатуры). Тогда вставка осуществляется следующим образом:

· первые k элементов массива остаются без изменений;

· все элементы, начиная с (k+1)-го, необходимо сдвинуть на одну позицию вправо;

· на место (k+1)-го элемента записываем значение x, т.е. после k-го элемента массива;

· при выводе массива необходимо учесть, что печатать придется уже не n (где n – количество элементов в исходном массиве), а n+1 элемент. Этот факт необходимо учесть еще при описании массива, чтобы не выйти за границы размерности.

2) Рассмотрим теперь вставку элемента в массив перед элементом с заданным номером.

Решение:

Эта вставка немногим отличается от предыдущей: в первой сдвигали все элементы, стоящие после k-го, то есть с (k+1)-го, а на его место ставили новый элемент. В этой – сдвигаем все элементы с k-го, а затем на его место ставим новый элемент.

Вставка нескольких элементов. Предположим, что надо вставлять не один элемент в массив, а по одному элементу после всех элементов с заданным свойством.

Пусть нужно вставить число после всех элементов массива кратных 3.

Решение: Приведем лишь общие рекомендации.

Первое, на что необходимо обратить внимание – это описание массива: на сколько элементов может увеличиваться массив? В нашем примере может оказаться, что все элементы исходного массива кратны 3, т.е. удовлетворяют заданному свойству. Значит, после каждого элемента нужно вставить число, т.е. количество элементов может увеличиться вдвое.

Второе. Если мы будем просматривать массив с начала и вставлять новый элемент после элемента с заданным свойством, то номер последнего элемента будет меняться, кроме того, будет просматриваться и новый (вставленный) элемент и его необходимо будет пропускать, поэтому решение будет не очень эффективным.

Лучше всего просматривать массив, начиная с конца, тогда вставляемый элемент мешать не будет. Кроме того, номер последнего элемента можно будет знать (если знать, сколько элементов вставлено на данный момент), при этом просмотр будет последовательным от N-го до
1-го.

Вариант 1. Дан целочисленный массив с количеством элементов n. Сжать массив, выбросив из него каждый второй элемент.

Вариант 2. Вставить по одному элементу перед всеми отрицательными элементами массива.

Вариант 3. Вставить два элемента: первый – после максимального элемента, второй – перед ним.

Вариант 4. Удалить из массива все отрицательные элементы.

Вариант 5. Преобразовать исходный массив, поменяв порядок элементов на обратный, не используя вспомогательный массив.

Вариант 6. Удалить все элементы массива, кратные 3 или 5.

Вариант 7. Вставить элемент перед последним отрицательным элементом массива.

Вариант 8. Дана упорядоченная последовательность. Вставить заданное число так, чтобы последовательность осталась упорядоченной.

Вариант 9. Преобразовать исходный массив, поменяв местами все пары соседних элементов.

Вариант 10. Преобразовать исходный массив, поменяв местами первый элемент с максимальным, а последний – с минимальным.

Вариант 11. Дан одномерный массив. Переставить в обратном порядке элементы массива, расположенные между максимальным и минимальным элементами.

Вариант 12. Дан одномерный массив. Удалить элемент, стоящий перед максимальным, а после максимального элемента вставить заданное число.

Вариант 13. Задан массив, содержащий несколько нулевых элементов. Сжать его, выбросив эти элементы.

Вариант 14. Массив заполнен нулями и единицами. Преобразовать этот массив так, чтобы вначале стояли нули, а затем единицы.

Вариант 15. Дан массив, состоящий из четного числа элементов. Поменять местами первую и вторую его половины, сохраняя порядок следования элементов в каждой половине.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: