Сортировка двумерного массива по сумме строк 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();
    }
}

}


Ответы (0 шт):