Выражение | Minimum |
(Ch1 < Ch2) AND (Ch1 < Ch3) AND (Ch1 < Ch4) | Ch1 |
(Ch2 < Ch3) AND (Ch2 < Ch4) | Ch2 |
Ch3 < Ch4 | Ch3 |
{else} | Ch4 |
Поэтому количество операторов WRITE в программе MinSort4B требуется всего лишь 4 + 3+ 2 = 9. В общем количество операторов WRITE для сортировки n-строки будет
n + (n – 1) + … + 3 + 2
Сравнение с IFSort и MinSort:
Количество операторов Write | |||
N | IFSortN | MinSortN | MINSortNB |
5 040 | |||
40 320 | |||
362 880 | |||
3 628 800 | 1 022 |
Первое уменьшение результатов было получено благодаря лучшей идее сортировки. Второе уменьшение результатов от более мощных возможностей языка CF-Паскаль.
Заключение.
Сортировка с использованием вложенных операторов IF иллюстрирует принцип решения задачи путем обобщения данной задачи на множество проблем и работа снизу вверх. Вложенные операторы IF могут плохо поддаваться интеллектуальному контролю. Комментарии состояния, способ записи отношения между значениями переменных в каждой точке программы, делают проект более простым даже при глубокой вложенности.
Комментарии состояния – это пример использования Булевой логики для рассуждения о действии программы. Всякий раз, когда сложная ситуация включает отрицание, объединение или выбор, булевы операторы NOT, AND и OR делают возможным формальный анализ. Булевы выражения могут всегда быть поняты путем построения таблиц истинности, но многие факты булевых условий могут быть наилучшим образом выражены из булевых тождеств и свойств операторов сравнения.
Паскаль имеет операторы NOT, AND, ORG, соответствующие одноименным операторам булевой логики, которые могут быть использованы для упрощения операторов IF и WHILE. Для поиска подходящего булева выражения часто бывает полезно использовать факты формальной булевой логики.