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); }
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])); } } }
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)); } } }
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"); } }
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); }
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); }
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); }