Ejemplo n.º 1
0
    // Quicksort: sorts arr[a..b] using delegate cmp to compare elements

    private static void Qsort <T>(T[] arr, DComparer <T> cmp, int a, int b)
    {
        if (a < b)
        {
            int i = a, j = b;
            T   x = arr[(i + j) / 2];
            do
            {
                while (cmp(arr[i], x) < 0)
                {
                    i++;                        // Call delegate cmp
                }
                while (cmp(x, arr[j]) < 0)
                {
                    j--;                        // Call delegate cmp
                }
                if (i <= j)
                {
                    T tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
                    i++; j--;
                }
            } while (i <= j);
            Qsort <T>(arr, cmp, a, j);
            Qsort <T>(arr, cmp, i, b);
        }
    }
        public MainWindowViewModel()
        {
            Comparer = new DComparer();

            ChangeFirst  = new Command(arg => ClickMethod(1));
            ChangeSecond = new Command(arg => ClickMethod(2));
        }
Ejemplo n.º 3
0
    public static void Main(String[] args)
    {
        int[]           ia     = { 5, 7, 3, 9, 12, 45, 4, 8 };
        DComparer <int> intCmp = IntCompare;

        Qsort <int>(ia, intCmp, 0, ia.Length - 1);
        foreach (int i in ia)
        {
            Console.Write("{0}   ", i);
        }
        Console.WriteLine();
        String[]           sa     = { "New York", "Rome", "Dublin", "Riyadh", "Tokyo" };
        DComparer <String> strCmp = String.Compare;

        Qsort <String>(sa, strCmp, 0, sa.Length - 1);
        foreach (String s in sa)
        {
            Console.Write("{0}   ", s);
        }
        Console.WriteLine();
    }
Ejemplo n.º 4
0
 public static void Quicksort <T>(T[] arr, DComparer <T> cmp)
 {
     Qsort(arr, cmp, 0, arr.Length - 1);
 }