示例#1
0
        public override IList <T> Sort <T>(IList <T> source, Func <T, T, bool> com)
        {
            var result  = new List <T>(source);
            var maxHeap = new BinanyHeap <T>(result, com);

            return(maxHeap.Sort());
        }
示例#2
0
        public BinaryTree <Frequencytem <T> > Compute <T>(IList <Frequencytem <T> > items)
        {
            //头一次碰到普通BinaryTree应用。

            var queue = new BinanyHeap <BinaryTreeNode <Frequencytem <T> > >
                        (
                items.Select(i => new BinaryTreeNode <Frequencytem <T> >()
            {
                Data = i
            }).ToList()
                , (a, b) => a.Data.Frequency < b.Data.Frequency
                        );

            for (int i = 1; i < items.Count; i++)
            {
                var childRoot = new BinaryTreeNode <Frequencytem <T> >();

                childRoot.Left  = queue.Extract();
                childRoot.Right = queue.Extract();
                childRoot.Data  = new Frequencytem <T>()
                {
                    Frequency = childRoot.Left.Data.Frequency
                                + childRoot.Right.Data.Frequency
                };

                queue.Insert(childRoot);
            }

            //也是头一次用
            var oneBit  = new BitArray(1, true);
            var zeroBit = new BitArray(1, false);

            var tree = new BinaryTree <Frequencytem <T> >(queue.Extract());

            tree.Preorder(tree.Root, (node) =>
            {
                var code = node.Data.Code;


                if (node == tree.Root)
                {
                    code = new BitArray(0);
                }

                if (node.Left != null)
                {
                    node.Left.Data.Code = zeroBit.Append(code);
                }
                if (node.Right != null)
                {
                    node.Right.Data.Code = oneBit.Append(code);
                }
            }
                          );

            return(tree);
        }
示例#3
0
        private BinanyHeap <int> CreateBinanyMinHeap1()
        {
            var heap = new BinanyHeap <int>(_testData1, (a, b) => a < b);

            return(heap);
        }