Esempio n. 1
0
        static void Shuffle <T>(IList <T> list)
        {
            int n = list.Count;

            while (n > 1)
            {
                n--;
                int k   = RandomSingleton.GetInstance().Next(n + 1);
                T   val = list[k];
                list[k] = list[n];
                list[n] = val;
            }
        }
Esempio n. 2
0
        static void GenerateTree()
        {
            WriteLine("Enter a size, start value, and end value, separated by spaces.");
            var s = ReadLine() !.Trim();
            var l = s.Split().Select(x => int.Parse(x)).ToList();

            var(size, from, to) = (l[0], l[1], l[2]);
            var tree        = new RbTree <int>();
            var rng         = RandomSingleton.GetInstance();
            var toInclusive = to + 1;

            watch.Start();
            for (int i = 0; i < size; ++i)
            {
                int j = rng.Next(from, toInclusive);
                tree.Add(j);
            }
            watch.Stop();

            WriteLine($"Added {size} elements in {watch.ElapsedMilliseconds} milliseconds.");
            WriteLine("Display tree? (Y/n)");
            if (ReadLine() !.Trim().ToLower() == "y")
            {
                tree.Print();
            }
            var list = tree.InOrderKeys();

            Shuffle(list);

            watch.Restart();
            foreach (var key in list)
            {
                tree.Remove(key);
            }
            watch.Stop();
            WriteLine($"Removed {size} elements in {watch.ElapsedMilliseconds} milliseconds.");
        }