Пример #1
0
        public void Add(T item)
        {
            int pos          = _list.BinarySearch(item, _comparer);
            int insertBefore = pos;

            if (insertBefore < 0)
            {
                insertBefore = ~insertBefore;
            }
            _list.Insert(insertBefore, item);
        }
Пример #2
0
        /// <summary>
        /// BigList<T> (WITH DUPLICATES)
        /// Editable sequence of indexed items
        /// Like List<T> but provides
        /// Fast Insert / Delete operations (at any position)
        /// Fast Copy / Concat / Sub-range operations
        /// Implemented by the data structure "Rope"
        /// Special kind of balanced binary tree: http://en.wikipedia.org/wiki/Rope_(data_structure)
        /// </summary>
        private static void TestBigList()
        {
            BigList <Student> students = new BigList <Student>();
            var student1 = new Student("First DUPLICATE", 21);
            var student2 = new Student("Second", 21);
            var student3 = new Student("Third", 22);
            var student4 = new Student("Forth", 23);
            var student5 = new Student("Fifth", 24);

            Console.WriteLine();
            students.Add(student1);
            students.Add(student2);
            students.Add(student3);
            students.Add(student4);
            students.Add(student5);
            students.Add(student1);
            Console.WriteLine("===== BEFORE SORT =====");
            Console.WriteLine("Index of student1: " + students.BinarySearch(student1));
            Console.WriteLine("Index of student2: " + students.BinarySearch(student2));
            Console.WriteLine("Index of student3: " + students.BinarySearch(student3));
            Console.WriteLine("Index of student4: " + students.BinarySearch(student4));
            Console.WriteLine("Index of student5: " + students.BinarySearch(student5));
            foreach (var item in students)
            {
                Console.WriteLine(item);
            }

            students.Sort();
            Console.WriteLine("===== AFTER SORT =====");
            Console.WriteLine("Index of student1: " + students.BinarySearch(student1));
            Console.WriteLine("Index of student2: " + students.BinarySearch(student2));
            Console.WriteLine("Index of student3: " + students.BinarySearch(student3));
            Console.WriteLine("Index of student4: " + students.BinarySearch(student4));
            Console.WriteLine("Index of student5: " + students.BinarySearch(student5));
            foreach (var item in students)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("===== INDEX students[3] =====");
            Console.WriteLine(students[3]);
        }
Пример #3
0
        /// <summary>
        /// BigList<T> (WITH DUPLICATES)
        /// Editable sequence of indexed items
        /// Like List<T> but provides
        /// Fast Insert / Delete operations (at any position)
        /// Fast Copy / Concat / Sub-range operations
        /// Implemented by the data structure "Rope"
        /// Special kind of balanced binary tree: http://en.wikipedia.org/wiki/Rope_(data_structure)
        /// </summary>
        private static void TestBigList()
        {
            BigList<Student> students = new BigList<Student>();
            var student1 = new Student("First DUPLICATE", 21);
            var student2 = new Student("Second", 21);
            var student3 = new Student("Third", 22);
            var student4 = new Student("Forth", 23);
            var student5 = new Student("Fifth", 24);
            Console.WriteLine();
            students.Add(student1);
            students.Add(student2);
            students.Add(student3);
            students.Add(student4);
            students.Add(student5);
            students.Add(student1);
            Console.WriteLine("===== BEFORE SORT =====");
            Console.WriteLine("Index of student1: " + students.BinarySearch(student1));
            Console.WriteLine("Index of student2: " + students.BinarySearch(student2));
            Console.WriteLine("Index of student3: " + students.BinarySearch(student3));
            Console.WriteLine("Index of student4: " + students.BinarySearch(student4));
            Console.WriteLine("Index of student5: " + students.BinarySearch(student5));
            foreach (var item in students)
            {
                Console.WriteLine(item);
            }

            students.Sort();
            Console.WriteLine("===== AFTER SORT =====");
            Console.WriteLine("Index of student1: " + students.BinarySearch(student1));
            Console.WriteLine("Index of student2: " + students.BinarySearch(student2));
            Console.WriteLine("Index of student3: " + students.BinarySearch(student3));
            Console.WriteLine("Index of student4: " + students.BinarySearch(student4));
            Console.WriteLine("Index of student5: " + students.BinarySearch(student5));
            foreach (var item in students)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("===== INDEX students[3] =====");
            Console.WriteLine(students[3]);
        }