Поменять местами две строки двумерного массива с минимальным и максимальным элементом по модулю
поняла чтобы поменять строки местами нужно поменять местами только индексы i, то есть индексы i всех элементов строки где есть минимальный элемент матрицы поменять на индекс i максимального элемента матрицы и наоборот. Проблема в том что я просто не знаю как это записать правильно(
static double sort(int[,] arr)
{
int max = arr[0, 0];
int min = arr[0, 0];
int maxIndex = 0;
int minIndex = 0;
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
if (max > Math.Abs(arr[i, j]))
{
max = arr[i, j];
maxIndex = i;
}
if (min < Math.Abs(arr[i, j]))
{
min = arr[i, j];
minIndex = i;
}
}
}
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
for (int j = 0; j < arr.GetLength(1); j++)
{
int temp = arr[minIndex, j];
arr[minIndex, j] = arr[maxIndex, j];
arr[maxIndex, j] = temp;
}
Автор решения: S.H.
→ Ссылка
А что, если так?
static void sort(int[,] arr)
{
int max = arr[0, 0];
int min = arr[0, 0];
int maxIndex = 0;
int minIndex = 0;
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
if (max > Math.Abs(arr[i, j]))
{
max = arr[i, j];
maxIndex = i;
}
if (min < Math.Abs(arr[i, j]))
{
min = arr[i, j];
minIndex = i;
}
}
}
int tmp=0;
if ( minIndex!=maxIndex ){
for( int j = 0; j < arr.GetLength(1); j++ ){
tmp = arr[minIndex,j];
arr[minIndex,j] = arr[maxIndex,j];
arr[maxIndex,j] = tmp;
}
}
}