ВУЗ:
Составители:
Рубрика:
20
Задача 7: Вставить элемент в массив по индексу.
В этой задаче неявно подразумевается, что у нас есть массив (пусть будет
массив целых чисел (пусть с именем data)), новое значение, которое будет
добавлено (пусть это будет newValue), и индекс элемента, в который надо
вставить новое значение (пусть это будет insIndex).
Рассуждения. Если алгоритм, который необходимо реализовать
, будет
написан верно, то он будет верно работать на конкретных данных. Поэтому
рассмотрим вначале конкретные данные. Пусть массив будет заполнен числами
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
И запишем массив после вставки нового значения:
2
4 6 8 4 3 1 3 7
0
1 2 3 4 5 6 7 8
Размер массива после вставки увеличился на единицу. Т. е. размер
результирующего массива равен (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[3];
newData[4] = data[4];
newData[5] = 3;
newData[6] = data[5];
newData[7] = data[6];
newData[8] = 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];
newData[4] = data[4];
newData[5] = 3;
newData[6] = data[6-1];
newData[7] = data[7-1];
newData[8] = data[8-1];
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »
