public void DriverFunction_Should_Return_ValidResult()
        {
            int[] arr                = new int[] { 1, 2, 3, 4, 5 };
            int   searchElement      = 4;
            BinarySearchIterative bb = new BinarySearchIterative();
            int res = bb.DriverFunction(arr, searchElement);

            Assert.Equal(4, res);
        }
Exemple #2
0
    public static void MeasureSearchTimes()
    {
        var binaryIterativeSamples = new List <long>();
        var binaryRecursiveSamples = new List <long>();
        var linqSearchSamples      = new List <long>();

        for (var sample = 0; sample < NumSamples; sample++)
        {
            var array = GetRandomArray();

            var swBinaryIterative = new Stopwatch();
            var binaryIterative   = new BinarySearchIterative();
            swBinaryIterative.Start();
            binaryIterative.FindKey(12, array);
            swBinaryIterative.Stop();

            var swBinaryRecursive = new Stopwatch();
            var binaryRecursive   = new BinarySearchRecursive();
            swBinaryRecursive.Start();
            binaryRecursive.FindKey(12, array);
            swBinaryRecursive.Stop();

            var swLinqSearch = new Stopwatch();
            var linqSearch   = new LinqIndexOfSearch();
            swLinqSearch.Start();
            linqSearch.FindKey(12, array);
            swLinqSearch.Stop();

            binaryIterativeSamples.Add(swBinaryIterative.ElapsedMilliseconds);
            binaryRecursiveSamples.Add(swBinaryRecursive.ElapsedMilliseconds);
            linqSearchSamples.Add(swLinqSearch.ElapsedMilliseconds);

            EditorUtility.DisplayProgressBar("Generating Samples",
                                             string.Format("Sample {0} of {1}", sample, NumSamples), sample / (float)NumSamples);
        }

        EditorUtility.ClearProgressBar();

        var iterativeAverage = binaryIterativeSamples.Sum(x => x) / NumSamples;
        var iterativeStd     =
            Math.Sqrt(binaryIterativeSamples.Sum(x => Math.Pow(x - iterativeAverage, 2)) / (NumSamples - 1));
        var recursiveAverage = binaryRecursiveSamples.Sum(x => x) / NumSamples;
        var recursiveStd     =
            Math.Sqrt(binaryRecursiveSamples.Sum(x => Math.Pow(x - recursiveAverage, 2)) / (NumSamples - 1));
        var linqAverage = linqSearchSamples.Sum(x => x) / NumSamples;
        var linqStd     =
            Math.Sqrt(linqSearchSamples.Sum(x => Math.Pow(x - linqAverage, 2)) / (NumSamples - 1));

        Debug.LogFormat("Binary Iterative: average {0} ms, standard deviation {1:F3} ms", iterativeAverage, iterativeStd);
        Debug.LogFormat("Binary Recursive: average {0} ms, standard deviation {1:F3} ms", recursiveAverage, recursiveStd);
        Debug.LogFormat("Linq IndexOf: average {0} ms, standard deviation {1:F3} ms", linqAverage, linqStd);
    }