Как отсортировать столбцы в матрице c#?
Есть у меня матрица с числами и нужно отсортировать её по суме модулей положительных чисел в столбцах (по убыванию). Когда дело дошло до самой сортировки - я сломался.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace console_2D
{
public struct Count
{
public double sum; // - сума стовпця
}
class Program
{
static void Main()
{
Console.InputEncoding = Encoding.Default;
Console.OutputEncoding = Encoding.Default;
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Random rand = new Random();
int n, k;
Console.Write("Количество строк: ");
while (!int.TryParse(Console.ReadLine(), out n) || n <= 0)
Console.WriteLine("Ошибка ввода\nn = ");
Console.Write("Количество столбцов: ");
while (!int.TryParse(Console.ReadLine(), out k) || k <= 0)
Console.WriteLine("Некоректні дані\nk = ");
double[,] matrix = new double[n, k];
Count[] sum_pos_colums = new Count[k];
bool negative;
int n_elements = 0;
for (int i = 0; i < n; i++)
{
negative = true;
for (int j = 0; j < k; j++)
{
matrix[i, j] = Math.Round(rand.NextDouble() * (18.4 + 27.8) - 27.8, 1);
Console.Write($"{matrix[i, j]} ");
if (matrix[i, j] > 0)
negative = false;
}
Console.WriteLine();
if (negative)
n_elements++;
}
Console.WriteLine($"Всего {n_elements} строк без положительных элементов.");
for (int j = 0; j < k; j++)
{
for (int i = 0; i < n; i++)
{
if (matrix[i, j] > 0)
sum_pos_colums[j].sum += (matrix[i, j]);
}
Console.WriteLine($"Cума модулей положительных элементов {j+1} столбца= {sum_pos_colums[j].sum};");
}
}
}
}
Есть матрица:
1 cтолбик [4.4, -6.6, 15.6, 13.1, -0.5]
2 столбик [-2.3, -3.3, 10.1, 3.8, -14.6]
3 столбик [5.6, 3.7, 5, 16.6, -26.9]
4 столбик [-9, 9.4, 2.7, -16.9, -10.2]
5 столбик [18.2, 5.8, -26.3, 17.3, 5.5]
Сума модулей в 1 = 25.4 в 2 =12.4 в 3 =32.4 в 4 =30.3 в 5=8.3
Значит нужно разместить столибки : 3, 4, 1, 2, 5