Esempio n. 1
0
        public void UpperBoundLinear_ArrayLengthIsOne()
        {
            var keys  = new long[] { 1 };
            int index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 0);

            Assert.AreEqual(0, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 1);
            Assert.AreEqual(-1, index);
        }
Esempio n. 2
0
 public void UpperBoundLinear8_Seq()
 {
     for (int i = 1; i < 1000; i++)
     {
         var keys = GenerateKeys(i);
         for (int k = 0; k < keys.Length; k++)
         {
             Assert.AreEqual(SearchHelpers.UpperBoundLinear(keys, keys.Length, keys[k]), SearchHelpers.UpperBoundLinear8(keys, keys.Length, keys[k]));
         }
     }
 }
Esempio n. 3
0
 public void UpperBoundLinear8_Random()
 {
     for (int i = 1; i < 1000; i++)
     {
         var keys = GetSortedRandomKeys(i);
         for (int k = 0; k < keys.Length; k++)
         {
             Assert.AreEqual(SearchHelpers.UpperBoundLinear(keys, keys.Length, keys[k]), SearchHelpers.UpperBoundLinear8(keys, keys.Length, keys[k]));
             Assert.AreEqual(SearchHelpers.UpperBoundLinear(keys, keys.Length, keys[k] + 1), SearchHelpers.UpperBoundLinear8(keys, keys.Length, keys[k] + 1));
             Assert.AreEqual(SearchHelpers.UpperBoundLinear(keys, keys.Length, keys[k] - 1), SearchHelpers.UpperBoundLinear8(keys, keys.Length, keys[k] - 1));
         }
     }
 }
Esempio n. 4
0
        private static void CompareLinearAndBinarySearch()
        {
            for (int arraySize = 1; arraySize < 25; arraySize++)
            {
                Console.WriteLine("CompareLinearAndBinarySearch. ArraySize: {0}", arraySize);
                Console.WriteLine("*******************************************************************");
                int[] keys = new int[arraySize];
                for (int i = 0; i < arraySize; i++)
                {
                    keys[i] = i + 1;
                }
                Stopwatch sw = Stopwatch.StartNew();
                long      k  = 0;
                for (int i = 0; i < 1000000; i++)
                {
                    k += SearchHelpers.UpperBoundLinear(keys, arraySize, arraySize);
                }
                sw.Stop();
                Console.WriteLine("K: {0}. UpperBoundLinear: {1} ms", k, sw.ElapsedMilliseconds);

                sw.Restart();
                k = 0;
                for (int i = 0; i < 1000000; i++)
                {
                    k += SearchHelpers.UpperBoundLinear4(keys, arraySize, arraySize);
                }
                sw.Stop();
                Console.WriteLine("K: {0}. UpperBoundLinear4: {1} ms", k, sw.ElapsedMilliseconds);

                sw.Restart();
                k = 0;
                for (int i = 0; i < 1000000; i++)
                {
                    k += SearchHelpers.UpperBoundLinear8(keys, arraySize, arraySize);
                }
                sw.Stop();
                Console.WriteLine("K: {0}. UpperBoundLinear8: {1} ms", k, sw.ElapsedMilliseconds);

                sw.Restart();
                k = 0;
                for (int i = 0; i < 1000000; i++)
                {
                    k += SearchHelpers.UpperBoundBinary(keys, arraySize, arraySize);
                }
                sw.Stop();
                Console.WriteLine("K: {0}. UpperBoundBinary: {1} ms", k, sw.ElapsedMilliseconds);

                Console.WriteLine("*******************************************************************\r\n");
            }
        }
Esempio n. 5
0
        public void UpperBoundLinear_ContainsDuplicates()
        {
            var keys = new long[] { 1, 2, 3, 3 };

            int index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 0);

            Assert.AreEqual(0, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 1);
            Assert.AreEqual(1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 2);
            Assert.AreEqual(2, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 3);
            Assert.AreEqual(-1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 4);
            Assert.AreEqual(-1, index);
        }
Esempio n. 6
0
        public void UpperBoundLinear_ArrayLengthIsThree()
        {
            var keys = new long[] { 1, 2, 3 };

            int index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 0);

            Assert.AreEqual(0, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 1);
            Assert.AreEqual(1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 2);
            Assert.AreEqual(2, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 3);
            Assert.AreEqual(-1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 4);
            Assert.AreEqual(-1, index);
        }
Esempio n. 7
0
        public void UpperBoundLinear_ContainsDuplicates2()
        {
            var keys = new long[] { 1, 3, 3, 5, 7, 7, 9 };

            int index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 0);

            Assert.AreEqual(0, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 1);
            Assert.AreEqual(1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 2);
            Assert.AreEqual(1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 3);
            Assert.AreEqual(3, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 4);
            Assert.AreEqual(3, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 5);
            Assert.AreEqual(4, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 6);
            Assert.AreEqual(4, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 7);
            Assert.AreEqual(6, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 8);
            Assert.AreEqual(6, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 9);
            Assert.AreEqual(-1, index);

            index = SearchHelpers.UpperBoundLinear(keys, keys.Length, 10);
            Assert.AreEqual(-1, index);
        }