Вы можете использовать это для сортировки ваших данных:
var input = new IComparable[][]
{
new IComparable[] {"Alex", 10, 10, 10, 10},
new IComparable[] {"Danny", 20, 20, 20, 20},
new IComparable[] {"Dave", 35, 40, 50, 40},
new IComparable[] {"Goerge",0 , 0 , 0 , 0 },
new IComparable[] {"Hannan",0 , 0 , 0 , 0 },
new IComparable[] {"Ian", 0 , 0 , 0 , 0 },
new IComparable[] {"Muna", 0 , 0 , 0 , 0 },
};
var indexOfColumnToOrderBy = 4; // "Final Grade" field
for (var i = 0; i < input.Length - 1; ++i)
{
for (var j = i + 1; j < input.Length; ++j)
{
IComparable[] t;
if (input[i][indexOfColumnToOrderBy].CompareTo(input[j][indexOfColumnToOrderBy]) < 0)
{
t = input[i];
input[i] = input[j];
input[j] = t;
}
}
}
Я объявил каждый элемент ваших вложенных массивов как IComparable
, потому что и string, и int реализуют этот интерфейс, и поэтому вы можете использовать методCompareTo
И вот как мы делаем это в 21-м веке: создаем класс Student
:
private class Student
{
public string Name { get; set; }
public int Test { get; set; }
public int Basket { get; set; }
public int Destructive { get; set; }
public int FinalGrade { get; set; }
}
, определяем ваш ввод как
var input = new Student[]
{
new Student {Name = "Alex", Test = 10, Basket = 10, Destructive = 10, FinalGrade = 10},
new Student {Name = "Danny", Test = 20, Basket = 20, Destructive = 20, FinalGrade = 20, },
new Student {Name = "Dave", Test = 35, Basket = 40, Destructive = 50, FinalGrade = 40, },
new Student {Name = "Goerge", Test = 0, Basket = 0, Destructive = 0, FinalGrade = 0, },
new Student {Name = "Hannan", Test = 0, Basket = 0, Destructive = 0, FinalGrade = 0, },
new Student {Name = "Ian", Test = 0, Basket = 0, Destructive = 0, FinalGrade = 0, },
new Student {Name = "Muna", Test = 0, Basket = 0, Destructive = 0, FinalGrade = 0, },
};
и сортируем с помощью Linq:
var sorted = input.OrderByDescending(student => student.FinalGrade).ToArray();
Даже если этот подход не удовлетворяет требованиям профессора, вы можете использовать его для отладки собственного алгоритма