Example #1
0
    // Этот метод теперь изменяет свои аргументы.
    public void swap(ref RefSwap ob1, ref RefSwap ob2)
    {
        RefSwap t;

        t   = ob1;
        ob1 = ob2; ob2 = t;
    }
        private static T PartitionOnIndexK <T>(T[] items, int k, int start, int end) where T : IComparable <T>
        {
            RefSwap <T> Swap = (ref T o1, ref T o2) =>
            {
                var temp = o1;
                o1 = o2;
                o2 = temp;
            };

            var kth = items[k];

            Swap(ref items[k], ref items[end]);
            var left = start;

            for (var i = start; i < end; i++) //items[end] holds the kth value.
            {
                if (items[i].CompareTo(kth) < 0)
                {
                    Swap(ref items[left++], ref items[i]);
                }
            }

            Swap(ref items[left], ref items[end]);

            return(left == k ? items[k]
             : ((left < k) ? PartitionOnIndexK(items, k, left + 1, end)
             : PartitionOnIndexK(items, k, start, left - 1)));
        }
    // This method changes its arguments.
    public void Swap(RefSwap ob1, RefSwap ob2)
    {
        RefSwap t;

        t   = ob1;
        ob1 = ob2;
        ob2 = t;
    }
Example #4
0
        static void Main(string[] args)
        {
            RefSwap x = new RefSwap(1, 2);
            RefSwap y = new RefSwap(3, 4);

            Console.WriteLine("До вызова");
            Console.Write("x ->"); x.Show();
            Console.Write("y ->"); y.Show();

            Console.WriteLine("После вызова Swap");
            x.Swap(ref x, ref y);

            Console.Write("x ->"); x.Show();
            Console.Write("y ->"); y.Show();

            Console.ReadLine();
        }
Example #5
0
    public static void Main()
    {
        RefSwap x = new RefSwap(1, 2);
        RefSwap y = new RefSwap(3, 4);

        Console.Write("x перед вызовом: ");
        x.show();
        Console.Write("y перед вызовом: ");
        y.show();
        Console.WriteLine();
        // Обмениваем объекты, на которые ссылаются x и y.
        x.swap(ref x, ref y);
        Console.Write("x после вызова: ");
        x.show();
        Console.Write("y после вызова: ");
        y.show();
    }
Example #6
0
    static void Main()
    {
        RefSwap x = new RefSwap(1, 2);
        RefSwap y = new RefSwap(3, 4);

        Console.Write("x before call: ");
        x.Show();
        Console.Write("y before call: ");
        y.Show();
        Console.WriteLine();
        // Exchange the objects to which x and y refer.
        x.Swap(ref x, ref y);
        Console.Write("x after call: ");
        x.Show();
        Console.Write("y after call: ");
        y.Show();
    }