Пример #1
0
        static void RunHashTable(TestCaseOptions opt)
        {
            int[] testParams = new int[] { 50, 10, 10 };
            SetupParams(opt.Params, testParams);
            int   n          = testParams[0];
            int   capacity   = testParams[1];
            int   numResults = testParams[2];
            float loadFactor = 1f;
            var   ht         = new StubHashTable <Guid, int>(capacity, loadFactor);
            var   keys       = new List <Guid>();

            for (var i = 0; i < n; i++)
            {
                var guid = Guid.NewGuid();
                keys.Add(guid);
                ht[guid] = i;
            }
            var chainSizes = ht.Store.Select(ele => ele?.Count ?? 0).ToArray();

            Console.WriteLine("HashTable Entries for n entries: {0} capacity: {1} ", n, capacity);
            var arr = new string[keys.Count];

            for (var i = 0; i < keys.Count; i++)
            {
                arr[i] = string.Format("{0}: {1}", keys[i], ht[keys[i]]);
            }
            DisplayResults(arr, numResults, "\n");
        }
Пример #2
0
        static void RunHashTableDistribution(TestCaseOptions opt)
        {
            int[] testParams = new int[] { 50, 10 };
            SetupParams(opt.Params, testParams);
            int   n          = testParams[0];
            int   capacity   = testParams[1];
            float loadFactor = n;
            var   ht         = new StubHashTable <Guid, int>(capacity, loadFactor);
            var   keys       = new List <Guid>();

            for (var i = 0; i < n; i++)
            {
                var guid = Guid.NewGuid();
                keys.Add(guid);
                ht[guid] = i;
            }
            var chainLengths = ht.Store.Select(ele => (double)(ele?.Count ?? 0)).ToList();

            Console.WriteLine("HashTable Distribution for n: {0} capacity: {1}", n, capacity);
            Console.WriteLine("Mean: {0} Median: {1} Mode: {2}", chainLengths.Average(), Helper.Median(chainLengths), Helper.Mode(chainLengths));
            var sd = Helper.StandardDeviation(chainLengths);

            Console.WriteLine("Standard Deviation {0}", sd);
        }