Чтобы написать математическую индукцию доказательства того, что счетная сортировка является устойчивой сортировкой, вы должны сделать три вещи:
- Выберите базовый случай и покажите, что ваше утверждение истинно в базовом случае.
- Предположим, что утверждение верно для всех проблемных экземпляров размером вплоть до некоторого размера k.Это сильная индукция, но мы могли бы сделать это, потому что беспокоиться об этом меньше.
- Продемонстрировать, как проблемные экземпляры следующего более высокого размера должны сохранять истинность утверждения.
Наши базовые случаи также могут быть пустыми массивами и массивами первого размера.Любой алгоритм сортировки на них тривиально стабилен.
Аналогично легко сформулировать гипотезу индукции: сортировка на счетчике устойчива на всех массивах, состоящих не более чем из k элементов.
Индуктивный шаг - сложныйчасть.Рассмотрим массив размером k + 1.Этот массив имеет самый большой, последний элемент (из элементов, которые являются самыми большими по критериям сортировки, есть один, который появляется последним в массиве).Рассмотрим массив размера k, полученный путем удаления этого элемента из массива размера k + 1 и смещения элементов, появляющихся справа от него влево, чтобы заполнить пробел.По предположению индукции счетная сортировка устойчива на этом массиве размера k.Чтобы доказать, что сортировка подсчета стабильна на массиве элементов размера k + 1, мы должны поэтому показать только то, что сортировка подсчета не может поместить самый большой, последний элемент перед любыми элементами того же размера.Чтобы убедиться, что это правда, обратите внимание, что при построении выходного массива B j принимает значения n, n-1,…, 1 в порядке убывания, то есть всех элементов с тем же значением, что и у нашего самого большого последнего элемента,это достигнет нашего элемента первым.Из-за этого гарантированно размещать этот элемент дальше вправо в B, чем любой другой элемент с таким же значением, поскольку C [A [j]] уменьшается, а не увеличивается в цикле, строящем B.