Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/32: Рейтинг темы: голосов - 32, средняя оценка - 4.94
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
1

Сдвиг элементов массива на несколько позиций

22.04.2012, 15:56. Показов 6116. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
допустим надо сдвинуть влево на pos позиций.

получается лучше использовать дополнительный массив чем вложенный цикл?
просто
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Console.WriteLine("С дополнительным массивом");
            int[] mas = new int[size];
            for (int i = 0; i < size; i++)
                mas[i] = i;
            int[] mas_help = new int[pos];
            p.Start();
            for (int i = 0; i < pos; i++)
                mas_help[i] = mas[i];
            for (int i = 0; i < size - pos; i++)
                mas[i] = mas[i + pos];
            for (int i = size - pos; i < size; i++)
                mas[i] = mas_help[i + pos - size];
            p.Stop(); 
            Console.WriteLine("Результат = " + p.Elapsed);
работает быстрее чем
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int[] mas1 = new int[size];
            for (int i = 0; i < size; i++)
                mas1[i] = i;
            Stopwatch p1= new Stopwatch();
            p1.Start();
            int q = 0;
            for (int i = 0; i < pos; i++)
            {
                for (int j = 0; j < size; j++)
                    if (j == 0) q = mas1[j];
                    else
                        mas1[j - 1] = mas1[j];
                mas1[size - 1] = q;
            }
            p1.Stop();
            Console.WriteLine("Результат = "+p1.Elapsed);
но в первом случае памяти тратится больше?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2012, 15:56
Ответы с готовыми решениями:

Осуществить циклический сдвиг элементов массива влево на k позиций
Есть код на сдвиг в правую сторону, (т.е. изначальный массив: 1,2,3,4,5; k=3; Исходный массив:...

Циклический сдвиг элементов массива влево/вправо на k позиций
Дан массив размера N и число k (0 &lt; k &lt; 5, k &lt; N). Осуществить циклический сдвиг элементов массива...

Описать процедуру,осуществляющую циклический сдвиг элементов массива на k позиций
Описать процедуру MoveLeft(A,N,k)1|MoveRight(A,N,k)2, осуществляющую циклический сдвиг элементов...

Осуществить циклический сдвиг элементов массива влево (вправо) на k позиций
Дан массив размера N и число k (0 &lt; k &lt; 5, k &lt; N). Осуществить циклический сдвиг элементов массива...

1
54 / 42 / 7
Регистрация: 08.04.2011
Сообщений: 227
22.04.2012, 16:07 2
Да, памяти будет использоваться больше, т.к. мы инициализируем в оперативной памяти дополнительный массив. Во втором случае - будет просто итерация массива, без дополнительных инициализаций, но этот процесс будет протекать медленнее.
1
22.04.2012, 16:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2012, 16:07
Помогаю со студенческими работами здесь

Осуществить циклический сдвиг элементов массива вправо на несколько позиций
есть задача &quot;Дан массив A. Осуществить циклический сдвиг элементов массива вправо на k позиций, где...

Циклический сдвиг элементов массива на k позиций
Задан массив из n элементов и число k. Осуществить циклический сдвиг элементов массива на k...

Сдвиг элементов массива вправо на 10 позиций
Написать процедуру, в которой для заданного массива В, состоящего из 10 элементов, его элементы...

Сдвиг элементов массива на n позиций влево
Здравствуйте! Уважаемые коллеги. Стал изучать массивы в с++ и столкнулся с трудностью сдвига. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru