Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 11 стр.

UptoLike

Составители: 

11
Задача 4: Удалить элемент из массива по индексу.
В этой задаче неявно подразумевается, что у нас есть массив (пусть будет
массив целых чисел (пусть с именем data)) и индекс удаляемого элемента
(целочисленное число (пусть с именем delIndex)).
Рассуждения. Если алгоритм, который необходимо реализовать, будет
написан верно, то он будет верно работать на конкретных данных. Поэтому
рассмотрим в начале конкретные данные.
Пусть массив будет заполнен
числами 2,4,6,8,4,1,3,7. И надо удалить элемент с индексом 3.
Запишем массив в виде таблицы, в первой строке которой будут написаны
значения элементов, а во второйиндексы элементов (напомним, что для того,
что бы обратиться к элементу массива, необходимо написать
имяМассива[индекс]).
Массив data до удаления:
2
4 6 8 4 1 3 7
0
1 2 3 4 5 6 7
И запишем массив после удаления элемента с индексом 3:
2
4 6 4 1 3 7
0 1 2 3 4 5 6
Видно, что размер массива после удаления уменьшился на единицу. Т. е.
размер результирующего массива равен (data.Length - 1). И очевидно, что после
удаления массив изменился, если изменился его размер. Назовем
получившийся массив именем newData. Тогда алгоритм работы для этого
конкретного случая можно записать в виде:
int[] data = new int[] { 2, 4, 6, 8, 4, 1, 3, 7 };
int[] newData = new int[data.Length - 1];
newData[0] = data[0];
newData[1] = data[1];
newData[2] = data[2];
newData[3] = data[4];
newData[4] = data[5];
newData[5] = data[6];
newData[6] = data[7];
Такая реализация для этого конкретного случая будет работать. Для того,
что бы реализовать алгоритм в обобщенном виде, запишем эту реализацию с
небольшим изменением, правильность которого очевидна.
int[] data = new int[] { 2, 4, 6, 8, 4, 1, 3, 7 };
int[] newData = new int[data.Length - 1];
newData[0] = data[0];
newData[1] = data[1];
newData[2] = data[2];
newData[3] = data[3 + 1];
newData[4] = data[4 + 1];
newData[5] = data[5 + 1];
newData[6] = data[6 + 1];