Прошу предложить лучший вариант перебора массива - C#
Формулировка задачи:
Всем доброго дня, такой вопросик.
есть массив
есть цикл foreach который выводит этот массив
теперь вопрос, как можно в т.е. какие числа в массиве не важно, просто надо их перевернуть в обратном порядке, заранее благодарен за варианты.
int[] array = { 1, 2, 3, 4, 5, 6, 7 }; foreach (var i in array)
{
Console.WriteLine(i);
}рукопашную
изменить массив так, чтобы при передачи егоТОЛЬКО В ЦИКЛ foreach
, он выводился задом наперед, т.е. 7,6,5,4,3,2,1 (в данном случае) т.е. нужно изменить массив до цикла foreach.- вопрос имеет чисто учебный характер
- нельзя применять любые встроенные методы C#
- сортировать массив не нужно
- также нужно чтобы способ работал при любой длине массива с числами
- в качестве примера можно взять допустим и такой массив int[] array = { 65, 2, 63, 4, 9, 32, 6 };
class Program
{
static void Main(string[] args)
{
int[] array = { 1, 2, 3, 4, 5, 6, 7 };
Masorybka(array);
foreach (var i in array)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
private static void Masorybka(int[] mass)
{
int dlina = mass.Length - 1;
int delta = 0;
if ((dlina & 1) == 0)
{
for (int i = 0; i < mass.Length - 1; i++)
{
if ((mass.Length - 1) / 2 <= i)
continue;
dlina -= delta;
int temp = mass[i];
mass[i] = mass[dlina];
mass[dlina] = temp;
if (i == 0)
delta = 1;
}
}
else
{
for (int i = 0; i < mass.Length - 1; i++)
{
if ((mass.Length - 1) / 2 + 1 <= i)
continue;
dlina -= delta;
int temp = mass[i];
mass[i] = mass[dlina];
mass[dlina] = temp;
if (i == 0)
delta = 1;
}
}
}
}Решение задачи: «Прошу предложить лучший вариант перебора массива»
textual
Листинг программы
int[] foo = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int[] bar = new int[foo.Length];
for (int i = 0; i < foo.Length; i++) {
bar[i] = foo[foo.Length - i - 1];
}
foreach (int i in bar) {
Console.Write("{0} ", i);
}