예제 #1
0
        public static void SortArray(object sortingObject)
        {
            string[] stringArray = (string[])sortingObject;

            for (int i = 0; i < stringArray.Length; i++)
            {
                for (int j = i; j < stringArray.Length; j++)
                {
                    compareDel = new compareDelegate(CompareStrings);
                    bool result = compareDel(stringArray[i], stringArray[j]);
                    if (result)
                    {
                        SwapElements(stringArray, i, j);
                    }
                }
            }
        }
 public BinarySearchTree(compareDelegate compare)
 {
     numberOfElements = 0;
     this.compare     = compare;
 }
        //Generates a binary search tree from
        // data made available elsewhere
        public BinarySearchTree(int size, getNewKey keyGetter, getNewValue valueGetter, compareDelegate compare)
        {
            this.compare = compare;
            bool            latch        = true;
            TreeConstructor firstInChain = new TreeConstructor(0, size - 1);
            TreeConstructor workingBranch;
            TreeConstructor previousBranch;

            add(keyGetter(firstInChain.index), valueGetter(firstInChain.index));
            while (latch)
            {
                workingBranch = firstInChain;
                workingBranch.bud();
                if (false == workingBranch.leftBranch.atEnd())
                {
                    add(keyGetter(workingBranch.leftBranch.index),
                        valueGetter(workingBranch.leftBranch.index));
                }
                else
                {
                    latch = false;
                    if (workingBranch.leftBranch.valid())
                    {
                        add(keyGetter(workingBranch.leftBranch.index),
                            valueGetter(workingBranch.leftBranch.index));
                    }
                }
                if (false == workingBranch.rightBranch.atEnd())
                {
                    latch = true;
                    add(keyGetter(workingBranch.rightBranch.index),
                        valueGetter(workingBranch.rightBranch.index));
                }
                else
                {
                    latch = latch || false;
                    if (workingBranch.rightBranch.valid())
                    {
                        add(keyGetter(workingBranch.rightBranch.index),
                            valueGetter(workingBranch.rightBranch.index));
                    }
                }
                while (workingBranch.hasNext)
                {
                    previousBranch = workingBranch;
                    workingBranch  = workingBranch.nextBranch;
                    workingBranch.bud();
                    previousBranch.rightBranch.leadTo(workingBranch.leftBranch);
                    if (false == workingBranch.leftBranch.atEnd())
                    {
                        latch = true;
                        add(keyGetter(workingBranch.leftBranch.index),
                            valueGetter(workingBranch.leftBranch.index));
                    }
                    else
                    {
                        latch = latch || false;
                        if (workingBranch.leftBranch.valid())
                        {
                            add(keyGetter(workingBranch.leftBranch.index),
                                valueGetter(workingBranch.leftBranch.index));
                        }
                    }
                    if (false == workingBranch.rightBranch.atEnd())
                    {
                        latch = true;
                        add(keyGetter(workingBranch.rightBranch.index),
                            valueGetter(workingBranch.rightBranch.index));
                    }
                    else
                    {
                        if (workingBranch.rightBranch.valid())
                        {
                            add(keyGetter(workingBranch.rightBranch.index),
                                valueGetter(workingBranch.rightBranch.index));
                        }
                        latch = latch || false;
                    }
                }
                firstInChain = firstInChain.leftBranch;
            }
        }
예제 #4
0
 public cSortList(List <T> _arr, compareDelegate _comDel)
 {
     m_arr    = _arr;
     m_comDel = _comDel;
 }