Переставить в обратном порядке элементы массива его минимальным и максимальным элементами - C#
Формулировка задачи:
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами, включая 2 минимальный и максимальный элементы.
Как переделать в мой вариант?
static void Main(string[] args)
{
int[] array = { 5, 10, 7, 8, 4, 2, 4, 1, 1, 3 };
int Min = int.MaxValue, minIndex = -1, Max = int.MinValue, maxIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > Max)
{
Max = array[i];
maxIndex = i;
}
if (array[i] < Min)
{
Min = array[i];
minIndex = i;
}
}
Console.WriteLine("Исходный массив: \t{0}", string.Join(", ", array));
int begin = Math.Min(minIndex, maxIndex) + 1, end = Math.Max(minIndex, maxIndex) - 1;
for (; begin < end; begin++, end--)
{
int tmp = array[begin];
array[begin] = array[end];
array[end] = tmp;
}
Console.WriteLine("Обработанный массив: \t{0}", string.Join(", ", array));
Console.Read();
Ввод с клавиатуры! У меня не получается под него правильно переделать!
Решение задачи: «Переставить в обратном порядке элементы массива его минимальным и максимальным элементами»
textual
Листинг программы
using System;
class demo
{
static void Main()
{
Console.Write("Длина массива : ");
int max = int.MinValue, min = int.MaxValue;
int minI=0, maxI=0,val=0;
int[] arr = new int[Int32.Parse(Console.ReadLine())];
for (int i = 0; i < arr.Length; i++ )
{
Console.Write("элемент #{0} >> ",i+1);
arr[i] = Int32.Parse(Console.ReadLine());
}
Console.WriteLine("Оригинальный массив : ");
foreach (int n in arr)
Console.Write(n+" ");
for (int i = 0; i < arr.Length; i++ )
{
if(arr[i] > max)
{
max = arr[i];
maxI = i;
}
if(arr[i] < min)
{
min = arr[i];
minI = i;
}
}
Console.WriteLine("\nПосле модификации : ");
for (int i = 0, l = Math.Min(minI, maxI), r = val=Math.Max(minI, maxI); i < arr.Length; i++)
{
if (i >= l && i <= r)
Console.Write(arr[val--] + " ");
else Console.Write(arr[i] + " ");
}
Console.WriteLine();
Console.ReadKey(true);
}
}