コード例 #1
0
        internal int Recursive_Sort_Insert(Builder_Page_File NewPageFile, int Start, int End)
        {
            int startIndex = Start;
            int endIndex   = End;
            int midIndex   = (int)Math.Ceiling((double)(endIndex - startIndex) / 2) + startIndex;

            if (endIndex - startIndex <= 1)
            {
                if (NewPageFile.CompareTo(this[startIndex]) <= 0)
                {
                    List.Insert(startIndex, NewPageFile);
                    return(startIndex);
                }

                List.Insert(endIndex, NewPageFile);
                return(endIndex);
            }

            if (NewPageFile.CompareTo(this[midIndex]) < 0)
            {
                endIndex = midIndex;
            }
            else
            {
                startIndex = midIndex;
            }

            return(Recursive_Sort_Insert(NewPageFile, startIndex, endIndex));
        }
コード例 #2
0
        /// <summary> Insert a new page into this collection, based on the file name </summary>
        /// <param name="NewPageFile"></param>
        /// <returns></returns>
        internal int Insert(Builder_Page_File NewPageFile)
        {
            if (List.Count == 0)
            {
                return(List.Add(NewPageFile));
            }

            if (NewPageFile.CompareTo(this[0]) <= 0)
            {
                List.Insert(0, NewPageFile);
                return(0);
            }

            if (NewPageFile.CompareTo(this[List.Count - 1]) >= 0)
            {
                return(List.Add(NewPageFile));
            }

            return(Recursive_Sort_Insert(NewPageFile, 0, List.Count - 1));
        }