Повтарящ код-как да го елиминирам?
Здравейте,
моля да ми помогнете, не знам как да елиминирам повтарящия код в методите за сортиране.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Student
    {
        public string name;
        public string major;
        public double grade;
        public string studyForm;
  
        public Student(string name, string major, double grade, string studyForm)
        {
            this.name = name;
            this.major = major;
            this.grade = grade;
            this.studyForm = studyForm;
        }
    }
    class Program
    {
        static void SortMG(Student[] sortMG, int n)
        {
            int i, j;
            Student tmpMG = new Student("","", 0, "");
            for (i = 0; i < n - 1; i++)
            {
                for (j = i; j < n; j++)
                {
                    if (sortMG[j].major.CompareTo(sortMG[i].major)<0)
                    {
                        tmpMG.name = sortMG[j].name;
                        tmpMG.major = sortMG[j].major;
                        tmpMG.studyForm = sortMG[j].studyForm;
                        tmpMG.grade = sortMG[j].grade;
                        sortMG[j].name = sortMG[i].name;
                        sortMG[j].major = sortMG[i].major;
                        sortMG[j].studyForm = sortMG[i].studyForm;
                        sortMG[j].grade = sortMG[i].grade;
                        sortMG[i].name = tmpMG.name;
                        sortMG[i].major = tmpMG.major;
                        sortMG[i].studyForm = tmpMG.studyForm;
                        sortMG[i].grade = tmpMG.grade;
                   }
                    else if (sortMG[j].major.CompareTo(sortMG[i].major) == 0)
                    {
                        if (sortMG[j].grade > sortMG[i].grade)
                        {
                            tmpMG.name = sortMG[j].name;
                            tmpMG.major = sortMG[j].major;
                            tmpMG.studyForm = sortMG[j].studyForm;
                            tmpMG.grade = sortMG[j].grade;
                            sortMG[j].name = sortMG[i].name;
                            sortMG[j].major = sortMG[i].major;
                            sortMG[j].studyForm = sortMG[i].studyForm;
                            sortMG[j].grade = sortMG[i].grade;
                            sortMG[i].name = tmpMG.name;
                            sortMG[i].major = tmpMG.major;
                            sortMG[i].studyForm = tmpMG.studyForm;
                            sortMG[i].grade = tmpMG.grade;
                        }
                    }
                }
            }
        }
        static void SortByName(Student[] sortN, int n)
        {
            int i, j;
            Student tmpN = new Student("", "", 0, "");
            for (i = 0; i < n - 1; i++)
            {
                for (j = i; j < n; j++)
                {
                    if (sortN[j].name.CompareTo(sortN[i].name) < 0)
                    {
                        tmpN.name = sortN[j].name;
                        tmpN.major = sortN[j].major;
                        tmpN.studyForm = sortN[j].studyForm;
                        tmpN.grade = sortN[j].grade;
                        sortN[j].name = sortN[i].name;
                        sortN[j].major = sortN[i].major;
                        sortN[j].studyForm = sortN[i].studyForm;
                        sortN[j].grade = sortN[i].grade;
                        sortN[i].name = tmpN.name;
                        sortN[i].major = tmpN.major;
                        sortN[i].studyForm = tmpN.studyForm;
                        sortN[i].grade = tmpN.grade;
                    }
                }
            }
        }