コード例 #1
0
ファイル: AVLTreeSorted.cs プロジェクト: kaasy/KaasyBasics
        private static bool compareAndVerify(IList <int> list, AVLTreeSorted <int> tree)
        {
            if (!areEqual(list, tree))
            {
                return(false);
            }
            int  treeNodesCount;
            bool ok = AVLTreeSorted <int> .verify(tree.root, out treeNodesCount);

            if (ok && treeNodesCount == tree.Count)
            {
                return(true);
            }
            return(false);
        }
コード例 #2
0
ファイル: AVLTreeSorted.cs プロジェクト: kaasy/KaasyBasics
        public static bool UnitTest()
        {
            int    n          = 10 * 1000;
            int    randomSeed = 123455;
            Random randomList = new Random(randomSeed);
            Random randomTree = new Random(randomSeed);

            List <int>          list = new List <int>();
            AVLTreeSorted <int> tree = new AVLTreeSorted <int>();
            bool ok;

            TimeSpan timeIndexOfList = getIndexOfTime(list, n, randomList);
            TimeSpan timeIndexOfTree = getIndexOfTime(tree, n, randomTree);

            ok = compareAndVerify(list, tree);
            if (!ok)
            {
                return(false);
            }

            TimeSpan timeDeleteList = getDeleteTime(list, list.Count, randomList);
            TimeSpan timeDeleteTree = getDeleteTime(tree, tree.Count, randomTree);

            ok = compareAndVerify(list, tree);
            if (!ok)
            {
                return(false);
            }

            TimeSpan timeInsertList = getAddTime(list, n, randomList, () => list.Sort());
            TimeSpan timeInsertTree = getAddTime(tree, n, randomTree, () => { });

            ok = compareAndVerify(list, tree);
            if (!ok)
            {
                return(false);
            }

            timeDeleteList += getDeleteTime(list, n / 2, randomList);
            timeDeleteTree += getDeleteTime(tree, n / 2, randomTree);
            ok              = compareAndVerify(list, tree);
            if (!ok)
            {
                return(false);
            }

            int[] array = new int[list.Count + 100];
            tree.CopyTo(array, 100);
            ok = areEqual(array.Skip(100).ToList(), list);
            if (!ok)
            {
                return(false);
            }

            List <int> enumeratorList = new List <int>();

            foreach (int item in tree)
            {
                enumeratorList.Add(item);
            }
            ok = areEqual(enumeratorList, list);
            if (!ok)
            {
                return(false);
            }

            timeDeleteList += getDeleteTime(list, n / 2, randomList);
            timeDeleteTree += getDeleteTime(tree, n / 2, randomTree);
            ok              = compareAndVerify(list, tree);
            if (!ok)
            {
                return(false);
            }

            return(true);
        }