Exemplo n.º 1
0
 public static void QuickSort <T>(IList <T> values, Comparison <T> comparison)
 {
     if (values.Count > 0)
     {
         SortHelpers.QuickSort(values, comparison, 0, values.Count - 1);
     }
 }
Exemplo n.º 2
0
        private static void QuickSort <T>(IList <T> values, Comparison <T> comparison, int left, int right)
        {
            int i = left;
            int j = right;
            T   pivot;

            // https://stackoverflow.com/a/15325195/148962

            pivot = values[(left + right) / 2];

            while (i <= j)
            {
                while (comparison(values[i], pivot) < 0)
                {
                    i++;
                }

                while (comparison(values[j], pivot) > 0)
                {
                    j--;
                }

                if (i <= j)
                {
                    T temp = values[i];
                    values[i++] = values[j];
                    values[j--] = temp;
                }
            }

            if (left < j)
            {
                SortHelpers.QuickSort(values, comparison, left, j);
            }

            if (i < right)
            {
                SortHelpers.QuickSort(values, comparison, i, right);
            }
        }
Exemplo n.º 3
0
 public void Sort()
 {
     SortHelpers.QuickSort(this.Items, (x, y) => x.Revision.CompareTo(y.Revision));
 }