Рассмотрим следующий пример.
Array.Sort(Myfiles, new customSort())
.
.
.
private class customSort : IComparer<object>
{
public override int Compare(obj A, obj B)
{
return (A.Value==B.Value?(0):((A.Value < B.Value)?(-1):(1)));
}
}
Если Myfiles содержит коллекцию объектов,
Этот метод использует алгоритм интроспективного сортировки (introsort) следующим образом:
С http://msdn.microsoft.com/en-us/library/kwx6zbd4.aspx
Для первого варианта здесь хороший gif: http://en.wikipedia.org/wiki/Insertion_sort#mediaviewer/File:Insertion-sort-example-300px.gif
Это зависит от алгоритма сортировки. Когда алгоритм должен сравнивать два объекта, чтобы определить их относительный порядок, он вызывает метод Compare
.
Для таких алгоритмов, как Bubblesort A и B, будут соседями, для чего-либо еще, о чем я могу думать прямо сейчас, они могут быть любыми объектами в коллекции.
Очевидно, что вызов происходит в методе Sort
. Все остальные вопросы относятся к внутренней реализации метода Sort
. Хотя вы можете заглянуть внутрь реальной логики, вы не должны нормально беспокоиться, так как вас интересует только конечный результат (т.е. Ваш массив сортируется).