Example #1
0
        public void SuperEtalon()
        {
            var    rqq    = new Rqq(new double[] { 6, 2, 0, 7, 9, 3, 1, 8, 5, 4 });
            double actual = rqq.Select(2, 8, 4);

            Assert.Equal(7, actual);
        }
Example #2
0
 public void RandomAllRanges()
 {
     for (int n = 3; n < 20; n++)
     {
         var data = new UniformDistribution(0, 100).Random(42).Next(n);
         Output.WriteLine("[DATA] " + string.Join("; ", data));
         var buffer = new double[data.Length];
         var rqq    = new Rqq(data);
         for (int i = 0; i < n; i++)
         {
             for (int j = i; j < n; j++)
             {
                 for (int k = 0; k < j - i; k++)
                 {
                     double actual = rqq.Select(i, j, k);
                     Array.Copy(data, i, buffer, 0, j - i + 1);
                     Array.Sort(buffer, 0, j - i + 1);
                     double expected = buffer[k];
                     Output.WriteLine($"n = {n}, i = {i}, j = {j}, k = {k}, expected = {expected}, actual = {actual}");
                     if (actual != expected)
                     {
                         DumpRqqTree(rqq);
                     }
                     Assert.Equal(expected, actual);
                 }
             }
         }
     }
 }
Example #3
0
        public void Run()
        {
            var data = new double[] { 6, 2, 0, 7, 9, 3, 1, 8, 5, 4 };
            var rqq  = new Rqq(data);

            Console.WriteLine(rqq.DumpTreeAscii());
            Console.WriteLine();
            for (int i = 0; i < data.Length; i++)
            {
                Console.WriteLine($"sorted[{i}] = {rqq.Select(0, data.Length - 1, i)}");
            }
        }