Beispiel #1
0
        private static int Partition(string [] data, int left, int right)
        {
            string pivot = data[left];

            while (true)
            {
                while (TComparer.Compare(data[left], pivot) == -1)
                {
                    left++;
                }

                while (TComparer.Compare(data[right], pivot) == 1)
                {
                    right--;
                }

                if (left < right)
                {
                    if (TComparer.Compare(data[left], data[right]) == 0)
                    {
                        return(right);
                    }

                    string temp = data[left];
                    data[left]  = data[right];
                    data[right] = temp;
                }
                else
                {
                    return(right);
                }
            }
        }
Beispiel #2
0
        public void Sort()
        {
            string temp;

            string[] data = _data;
            for (int j = 0; j <= data.Length - 2; j++)
            {
                for (int i = 0; i <= data.Length - 2; i++)
                {
                    if (TComparer.Compare(data[i], data[i + 1]) == 1)
                    {
                        temp        = data[i + 1];
                        data[i + 1] = data[i];
                        data[i]     = temp;
                    }
                }
            }
            _data = data;
        }
Beispiel #3
0
        private void heapify(string[] data, int n, int i)
        {
            int largest = i;
            int left    = 2 * i + 1;
            int right   = 2 * i + 2;

            if (left < n && TComparer.Compare(data[left], data[largest]) == 1)
            {
                largest = left;
            }
            if (right < n && TComparer.Compare(data[right], data[largest]) == 1)
            {
                largest = right;
            }
            if (largest != i)
            {
                string swap = data[i];
                data[i]       = data[largest];
                data[largest] = swap;
                heapify(data, n, largest);
            }
        }