Результат: ученик безопасно работает с массивом фиксированной длины, проектирует линейные и сортировочные алгоритмы, выбирает изменение на месте или новый результат и использует упорядоченность как предусловие поиска.
Содержание:
-
Понять объект одномерного массива
- тип
T[]; - фиксированная длина после создания;
- создание через
newи инициализатор; - значения элементов по умолчанию;
- пустой массив как корректный объект;
Lengthкак число элементов.
- тип
-
Работать с допустимыми индексами
- полуинтервал
[0, Length); - первый и последний индекс;
- проверка непустоты перед доступом к краевому элементу;
IndexOutOfRangeExceptionкак следствие недопустимой координаты;- различие длины и последнего индекса.
- полуинтервал
-
Выбирать способ обхода
- цикл по индексам;
foreachдля последовательного чтения;- прямой и обратный обход;
- согласованное движение двух индексов;
- обработанный префикс и непросмотренный суффикс;
- ограничения изменения элемента через переменную
foreach.
-
Реализовывать линейные агрегаты
- сумма, произведение и счётчик;
- первое и последнее вхождение;
- минимум и максимум;
- одновременное вычисление нескольких характеристик;
- нейтральное значение и затравка первым элементом;
- контракт пустого входа.
-
Реализовывать линейные преобразования
- сдвиг;
- разворот;
- замена;
- фильтрация;
- уплотнение активного префикса;
- удаление и вставка при фиксированной вместимости;
- слияние двух последовательностей.
-
Выбирать модель изменения
- мутация исходного массива;
- создание независимого результата;
- частичное изменение;
- логическая длина внутри физического массива;
- дополнительная память;
- инвариант преобразования на месте.
-
Передавать массивы методам
- копирование ссылки при обычной передаче;
- изменение элементов общего объекта;
- локальная замена параметра;
- массив как возвращаемый результат;
- создание нового объекта;
paramsкак специальная форма массива параметров.
-
Работать с параллельными массивами
- одинаковая длина;
- общий индекс как связь полей;
- согласованная перестановка;
- согласованная фильтрация;
- риск нарушения связи;
- переход к
structпосле введения собственного типа.
-
Освоить простые сортировки
- отношение порядка;
- сортировка вставками;
- сортировка выбором как альтернативная модель;
- квадратичное число сравнений или перемещений;
- устойчивость;
- сортировка по одному или нескольким ключам;
- сохранение связанных данных.
-
Освоить сортировку слиянием
- разделение диапазона;
- слияние двух упорядоченных частей;
- дополнительный буфер;
O(n log n)времени;- устойчивость при правильном выборе равных элементов;
- сравнение с простой сортировкой.
-
Понимать контракт
Array.Sort- сортировка массива на месте;
- ожидаемый порядок
O(n log n)в учебной модели; - отсутствие права предполагать устойчивость;
- необходимость копии для сохранения исходного порядка;
- сравнение библиотечной операции с собственным алгоритмом.
-
Реализовывать бинарный поиск
- обязательная упорядоченность;
- закрытая или полуоткрытая модель границ;
- средний индекс без переполнения;
- сокращение диапазона кандидатов;
- поиск первого и следующего за последним вхождения;
LowerBoundиUpperBound;O(log n)сравнений.
-
Сравнивать альтернативы
- один проход и несколько проходов;
- время против дополнительной памяти;
- линейный поиск против предварительной сортировки и бинарного поиска;
- сохранение порядка;
- устойчивость;
- доказательство инварианта и оценка класса роста.

