Verständnisproblem : IComparable -> CompareTo

shuya

Grünschnabel
Guten Tag,

koennte mir jemand bitte sagen, warum Value den Wert 72 besitzt und nicht den Wert 56 ? Ich verstehe nicht die Reihenfolge der Zuweisung nachdem list.Sort(); abgefragt wird.

Vielen Dank
Unbenannt.jpg
 
das Objekt welches aktuell geprüft wird hat den Wert 72.
56 hat das Objekt welches als parameter beim ComparerTo übergeben wurde, das objekt welches mit der 72 verglichen werden soll.
 
In welcher Reihenfolge sort die 4 Elemente miteinander vergleicht hängt davon ab, wie das
(schon fertige) sort programmiert wurde. Eine allgemeingültige Aussage gibts da nicht,
 
die Sortierung läuft über QuickSort:

foglendes aus dem Reflector rauskopiert aus der mscorlib für .Net 2.0
Code:
internal static void QuickSort(TKey[] keys, TValue[] values, int left, int right, IComparer<TKey> comparer)
{
  do
  {
  int a = left;
  int b = right;
  int num3 = a + ((b - a) >> 1);
  ArraySortHelper<TKey, TValue>.SwapIfGreaterWithItems(keys, values, comparer, a, num3);
  ArraySortHelper<TKey, TValue>.SwapIfGreaterWithItems(keys, values, comparer, a, b);
  ArraySortHelper<TKey, TValue>.SwapIfGreaterWithItems(keys, values, comparer, num3, b);
  TKey y = keys[num3];
  do
  {
  while (comparer.Compare(keys[a], y) < 0)
  {
  a++;
  }
  while (comparer.Compare(y, keys[b]) < 0)
  {
  b--;
  }
  if (a > b)
  {
  break;
  }
  if (a < b)
  {
  TKey local2 = keys[a];
  keys[a] = keys[b];
  keys[b] = local2;
  if (values != null)
  {
  TValue local3 = values[a];
  values[a] = values[b];
  values[b] = local3;
  }
  }
  a++;
  b--;
  }
  while (a <= b);
  if ((b - left) <= (right - a))
  {
  if (left < b)
  {
  ArraySortHelper<TKey, TValue>.QuickSort(keys, values, left, b, comparer);
  }
  left = a;
  }
  else
  {
  if (a < right)
  {
  ArraySortHelper<TKey, TValue>.QuickSort(keys, values, a, right, comparer);
  }
  right = b;
  }
  }
  while (left < right);
}
 
Zurück