Реферат: Создание эффективной реализации сортированного списка с использованием generics
// можно перекинуть значения на левую страницу.
// Находим нужное количесво элементов для переброски.
int MoveCount = (BTConst.MaxCount - LeftPage.Count) / 2;
// Перемещаем начальные элементы из текущей страницы
// в конец левой страницы...
Array.Copy(CurrentLeafPage.PageItems, 0,
LeftPage.PageItems, LeftPage.Count, MoveCount);
// И сдвигаем оставшиеся элементы страницы в начало.
Array.Copy(CurrentLeafPage.PageItems, MoveCount,
CurrentLeafPage.PageItems, 0, CurrentLeafPage.Count - MoveCount);
// Затираемперемещенныеэлементы.
Array.Clear(CurrentLeafPage.PageItems,
CurrentLeafPage.Count - MoveCount, MoveCount);
// Так как нулевой элемент на странице изменился, необходимо
// откорректировать значение ключа, ссылающегося на эту страницу
// в массиве верхнего уровня.
// Исправляем значение ключа в верхнем уровне так, чтобы его
// значение было равным значению ключа нулевого элемента
// соответствующей листовой страницы.
NodeArray[_currentPageIndex].Key = CurrentLeafPage.PageItems[0].Key;
// Текущий ключ был перемещен.
// Если он переместился на левую страницу, изменяем значение
// текущей страницы и текущего индекса на ней так, чтобы они
// указывалинавставленныйключ.
if (_currentElementIndex < MoveCount)
{
_currentElementIndex += LeftPage.Count;
CurrentLeafPage.Count -= MoveCount;
LeftPage.Count += MoveCount;