Ejemplo n.º 1
0
        private int SortPartition(int[] array, int first, int last)
        {
            var boundary = array[first];

            var left  = first;
            var right = last;

            while (left < right)
            {
                while (array[left] < boundary)
                {
                    left++;
                }

                while (array[right] > boundary)
                {
                    right--;
                }

                if (left < right)
                {
                    RelatedActionsHelper.Swap(ref array[left], ref array[right]);
                }
            }

            return(left);
        }
Ejemplo n.º 2
0
        public int[] Sort([NotNull] int[] array, int first, int last)
        {
            var length = last - first + 1;

            for (var i = length / 2 - 1; i >= 0; i--)
            {
                Heapify(array, length, i);
            }

            for (var i = length - 1; i >= 0; i--)
            {
                RelatedActionsHelper.Swap(ref array[0], ref array[i]);
                Heapify(array, i, 0);
            }

            return(array);
        }
Ejemplo n.º 3
0
        public int[] Sort([NotNull] int[] array, int first, int last)
        {
            var length = last - first + 1;

            for (var n = length - 1; 0 < n; n--)
            {
                for (var j = 0; j < length - 1; j++)
                {
                    if (array[j] > array[j + 1])
                    {
                        RelatedActionsHelper.Swap(ref array[j], ref array[j + 1]);
                    }
                }
            }

            return(array);
        }
Ejemplo n.º 4
0
        private void Heapify(int[] array, int numOfElements, int index)
        {
            var largest = index;
            var left    = 2 * index + 1;
            var right   = 2 * index + 2;

            if (left < numOfElements && array[left] > array[largest])
            {
                largest = left;
            }

            if (right < numOfElements && array[right] > array[largest])
            {
                largest = right;
            }

            if (largest != index)
            {
                RelatedActionsHelper.Swap(ref array[largest], ref array[index]);
                Heapify(array, numOfElements, largest);
            }
        }