Example #1
0
        // 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);
        }
Example #2
0
        // 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);
        }
Example #3
0
        // 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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }