我想排序数字,可作为字符串数组。经过一些查找,跟随是有用的。
Array.Sort<T> Method (T[], Comparison<T>)但是,我想了解比较函数的执行情况。
示例
Array.Sort(unsorted, (left, right) => {
if (left.Length != right.Length)
{
return left.Length - right.Length;
}
else
{
return string.CompareOrdinal(left, right);
}
});发布于 2017-05-09 12:46:04
比较函数是覆盖排序方法实现,还是在执行排序方法之后调用'n‘,还是将某些函数'x’替换为传递的委托函数?
比较方法将用于在排序时比较元素。排序算法将像它那样工作(InsertionSort或QuickSort)。这是您可能需要的自定义比较。
我们在哪里得到我们在比较函数中的两个参数的值?
要比较的两个值将根据迭代在排序算法中选择。
有关示例,请参见这。
发布于 2017-05-09 13:01:57
想想这些人,你可以用名字来比较他们:
public class Person
{
string name;
public static int CompareByName(Person person1, Person person2)
{
return String.Compare(person1.Name, person2.Name);
}
}方法CompareByName(Person person1, Person person2)与Comparison<T>的定义相匹配,因为定义是“表示比较相同类型的两个对象的方法”。因此,现在,考虑到所有这些,您可以按名称对一个person数组进行排序,在Array.Sort<T> Method (T[], Comparison<T>)方法中,您可以用Person类型替换T类型的每一个分支,结果如下:
Array.Sort<Person> Method (T[], Comparison<Person>)因此,例如,您有:
Person[] people = {p1,p2,p3...} (where p1,p2,p3... are `Person` type)你可以:
Array.Sort(people, Person.CompareByName);就这样..。:)
https://stackoverflow.com/questions/43870097
复制相似问题