// Token: 0x06003A3E RID: 14910 RVA: 0x000DD064 File Offset: 0x000DB264 private static int PickPivotAndPartition(TKey[] keys, TValue[] values, int lo, int hi, IComparer <TKey> comparer) { int num = lo + (hi - lo) / 2; ArraySortHelper <TKey, TValue> .SwapIfGreaterWithItems(keys, values, comparer, lo, num); ArraySortHelper <TKey, TValue> .SwapIfGreaterWithItems(keys, values, comparer, lo, hi); ArraySortHelper <TKey, TValue> .SwapIfGreaterWithItems(keys, values, comparer, num, hi); TKey tkey = keys[num]; ArraySortHelper <TKey, TValue> .Swap(keys, values, num, hi - 1); int i = lo; int num2 = hi - 1; while (i < num2) { while (comparer.Compare(keys[++i], tkey) < 0) { } while (comparer.Compare(tkey, keys[--num2]) < 0) { } if (i >= num2) { break; } ArraySortHelper <TKey, TValue> .Swap(keys, values, i, num2); } ArraySortHelper <TKey, TValue> .Swap(keys, values, i, hi - 1); return(i); }
// Token: 0x06003A23 RID: 14883 RVA: 0x000DC4E4 File Offset: 0x000DA6E4 private static int PickPivotAndPartition(T[] keys, int lo, int hi, IComparer <T> comparer) { int num = lo + (hi - lo) / 2; ArraySortHelper <T> .SwapIfGreater(keys, comparer, lo, num); ArraySortHelper <T> .SwapIfGreater(keys, comparer, lo, hi); ArraySortHelper <T> .SwapIfGreater(keys, comparer, num, hi); T t = keys[num]; ArraySortHelper <T> .Swap(keys, num, hi - 1); int i = lo; int num2 = hi - 1; while (i < num2) { while (comparer.Compare(keys[++i], t) < 0) { } while (comparer.Compare(t, keys[--num2]) < 0) { } if (i >= num2) { break; } ArraySortHelper <T> .Swap(keys, i, num2); } ArraySortHelper <T> .Swap(keys, i, hi - 1); return(i); }
// Token: 0x06003A3F RID: 14911 RVA: 0x000DD100 File Offset: 0x000DB300 private static void Heapsort(TKey[] keys, TValue[] values, int lo, int hi, IComparer <TKey> comparer) { int num = hi - lo + 1; for (int i = num / 2; i >= 1; i--) { ArraySortHelper <TKey, TValue> .DownHeap(keys, values, i, num, lo, comparer); } for (int j = num; j > 1; j--) { ArraySortHelper <TKey, TValue> .Swap(keys, values, lo, lo + j - 1); ArraySortHelper <TKey, TValue> .DownHeap(keys, values, 1, j - 1, lo, comparer); } }
private static void Heapsort(T[] keys, int lo, int hi, IComparer <T> comparer) { int n = hi - lo + 1; for (int i = n / 2; i >= 1; --i) { ArraySortHelper <T> .DownHeap(keys, i, n, lo, comparer); } for (int index = n; index > 1; --index) { T[] a = keys; int i = lo; int num = index; int j = i + num - 1; ArraySortHelper <T> .Swap(a, i, j); ArraySortHelper <T> .DownHeap(keys, 1, index - 1, lo, comparer); } }
private static void Heapsort(TKey[] keys, TValue[] values, int lo, int hi, IComparer <TKey> comparer) { int n = hi - lo + 1; for (int i = n / 2; i >= 1; --i) { ArraySortHelper <TKey, TValue> .DownHeap(keys, values, i, n, lo, comparer); } for (int index = n; index > 1; --index) { TKey[] keys1 = keys; TValue[] values1 = values; int i = lo; int num = index; int j = i + num - 1; ArraySortHelper <TKey, TValue> .Swap(keys1, values1, i, j); ArraySortHelper <TKey, TValue> .DownHeap(keys, values, 1, index - 1, lo, comparer); } }
private static int PickPivotAndPartition(TKey[] keys, TValue[] values, int lo, int hi, IComparer <TKey> comparer) { int index = lo + (hi - lo) / 2; ArraySortHelper <TKey, TValue> .SwapIfGreaterWithItems(keys, values, comparer, lo, index); ArraySortHelper <TKey, TValue> .SwapIfGreaterWithItems(keys, values, comparer, lo, hi); ArraySortHelper <TKey, TValue> .SwapIfGreaterWithItems(keys, values, comparer, index, hi); TKey key = keys[index]; ArraySortHelper <TKey, TValue> .Swap(keys, values, index, hi - 1); int i = lo; int j = hi - 1; while (i < j) { do { ; }while (comparer.Compare(keys[++i], key) < 0); do { ; }while (comparer.Compare(key, keys[--j]) < 0); if (i < j) { ArraySortHelper <TKey, TValue> .Swap(keys, values, i, j); } else { break; } } ArraySortHelper <TKey, TValue> .Swap(keys, values, i, hi - 1); return(i); }
private static int PickPivotAndPartition(T[] keys, int lo, int hi, IComparer <T> comparer) { int index = lo + (hi - lo) / 2; ArraySortHelper <T> .SwapIfGreater(keys, comparer, lo, index); ArraySortHelper <T> .SwapIfGreater(keys, comparer, lo, hi); ArraySortHelper <T> .SwapIfGreater(keys, comparer, index, hi); T obj = keys[index]; ArraySortHelper <T> .Swap(keys, index, hi - 1); int i = lo; int j = hi - 1; while (i < j) { do { ; }while (comparer.Compare(keys[++i], obj) < 0); do { ; }while (comparer.Compare(obj, keys[--j]) < 0); if (i < j) { ArraySortHelper <T> .Swap(keys, i, j); } else { break; } } ArraySortHelper <T> .Swap(keys, i, hi - 1); return(i); }