Сортировка двумерного массива по сумме строк C#
Есть задание: Дана целочисленная матрица размером n строк, m столбцов. Для каждой строки найдите сумму элементов и упорядочьте строки матрицы по возрастанию сумм.
Написал заполнение матрицы, вывод в DataGirdView и нашёл сумму каждой строки, дальше тупик. Прошу помочь со сравнением и перемещением строк массива.
Сравнение сумм не работает правильно, выдаёт только один из элементов строки с максимальной суммой.
После сравнения идут мои попытки реализации.
Мой код:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
}
private void button2_Click(object sender, EventArgs e)
{
int n = int.Parse(textBox1.Text);
int m = int.Parse(textBox2.Text);
dataGridView1.RowCount = n;
dataGridView1.ColumnCount = m;
dataGridView2.RowCount = n;
dataGridView2.ColumnCount = m;
int[] sumstr = new int[m];
int[,] mass = new int [n, m];
int[] temp = new int[m];
int[] temp2 = new int[m];
int[,] sortmass = new int[n, m];
Random rand = new Random();
// заполнение массива рандомными числами
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
mass[i, j] = rand.Next(50);
dataGridView1.Rows[i].Cells[j].Value = mass[i, j];
}
}
// сумма строк массива
for (int i = 0; i < mass.GetLength(0); i++)
{
int sum = 0;
for (int j = 0; j < mass.GetLength(1); j++)
{
sum += mass[i, j];
sumstr[i] = sum;
}
textBox3.Text += sumstr[i].ToString() + ";";
}
// нахождение максимальной суммы
var max = int.MinValue;
var maxIndex = 0;
for (int i = 0; i < sumstr.Length; i++)
{
if (sumstr[i] < max) continue;
max = sumstr[i];
maxIndex = i+1;
textBox4.Text = "макс сумма " + max.ToString() + " - " + "у строки " + maxIndex.ToString();
}
//сравнение сумм строк массива
for (int j = 0; j < mass.GetLength(1); j++) //строки
{
for (int i = 1; i < mass.GetLength(0); i++) //столбцы
{
if (sumstr[i] > sumstr[i-1])
{
sortmass[i, j] = mass[i, j];
}
else
{
sortmass[i, j] = mass[i - 1, j];
}
textBox5.Text = sortmass[i, j].ToString();
}
}
/*for (int i = 1; i < mass.GetLength(0); i++)
{
if (sumstr[i] > sumstr[i-1])
{
for (int j = 0; j < mass.GetLength(1); j++)
{
temp[j] = mass[i, j];
}
}
else
{
for (int j = 0; j < mass.GetLength(1); j++)
{
temp2[j] = mass[i, j];
}
}
}
for (int i = 0; i < temp.Length; i++)
{
textBox5.Text += temp[i].ToString() + "; ";
textBox6.Text += temp2[i].ToString() + "; ";
}*/
// сортировка сумм по возрастанию
//Array.Sort(sumstr);
// вывод отсортированного массива
/*for (int i = 0; i < sumstr.Length; i++)
{
textBox4.Text += sumstr[i].ToString() + ";";
}
for (int i = 0; i < mass.GetLength(0); i++) //строки
{
int sum1 = 0;
for (int j = 0; j < mass.GetLength(1); j++) //столбцы
{
sum1 += mass[i, j];
if (sum1 < sumstr[i])
{
temp[j] = mass[0, j];
}
else
{
temp2[j] = mass[0, j];
}
textBox5.Text += temp[j].ToString() + "; ";
textBox6.Text += temp2[j].ToString() + "; ";
}
}*/
// сравнение сумм строк и отсортированного массива
/*for (int i = 0; i < mass.GetLength(0); i++)
{
int sum = 0;
for (int j = 0; j < mass.GetLength(1); j++)
{
sum += mass[i, j];
if (sum == sumstr[i])
{
textBox5.Text += "True" + ";";
}
else
{
textBox5.Text += "False" + ";";
}
}
}*/
// меняем 1 и 3 строку массива местами
/*for (int i = 0; i < mass.GetLength(1); i++)
{
(mass[1, i], mass[3, i]) = (mass[3, i], mass[1, i]);
}*/
// вывод массив в табл. 2
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
dataGridView2.Rows[i].Cells[j].Value = mass[i, j];
}
}
}
private void button3_Click(object sender, EventArgs e)
{
Close();
}
}
}