У меня есть собственное определение «сортировки» последовательности.
Для любой последовательности [a, b, c,…] мы сравниваем ее с отсортированной последовательностью, содержащей одинаковые элементы, подсчитываем количество совпадений и делим ее на количество элементов в последовательности.
Например, для данной последовательности [5,1,2,3,4]
мы действуем следующим образом:
1) отсортировать последовательность: [1,2,3,4,5]
2) сравнить отсортированную последовательность с оригиналом, переместив ее на одну позицию за раз и посчитав максимальное количество совпадений:
[5,1,2,3,4]
[1,2,3,4,5] one match
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] 4 matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
...
[5,1,2,3,4]
[1,2,3,4,5] no matches
3) Максимальное количество совпадений равно 4, мы можем рассчитать «сортировку» как 4/5 = 0,8.
Сортировка отсортированной последовательности будет 1, а сортировка последовательности с элементами, расположенными в обратном порядке, будет 1 / n.
Идея этого определения заключается в том, чтобы оценить минимальный объем работы, который нам потребуется для преобразования любой последовательности в отсортированную последовательность. В приведенном выше примере нам нужно переместить только один элемент, 5 (есть много способов, но перемещение 5 является наиболее эффективным). Когда элементы будут расположены в обратном порядке, нам нужно будет переместить 4 элемента. И когда последовательность была отсортирована, никакой работы не требуется.
Я надеюсь, что мое определение имеет смысл.