Скажем, у нас есть 0-индексированная последовательность S, возьмите S [0] и вставьте ее в место в S, где следующее значение больше, чем S [0], а предыдущее значение меньше, чем S [0].Формально S [i] следует поместить в такое место, где S [i-1] Работает так в списке:
Sorting [2, 8, 5, 4, 7, 0, 6, 1, 10, 3, 9]
[2, 8, 5, 4, 7, 0, 6, 1, 10, 3, 9]
[2, 8, 5, 4, 7, 0, 6, 1, 10, 3, 9]
[2, 5, 4, 7, 0, 6, 1, 8, 10, 3, 9]
[2, 4, 5, 7, 0, 6, 1, 8, 10, 3, 9]
[2, 4, 5, 7, 0, 6, 1, 8, 10, 3, 9]
[2, 4, 5, 0, 6, 1, 7, 8, 10, 3, 9]
[0, 2, 4, 5, 6, 1, 7, 8, 10, 3, 9]
[0, 2, 4, 5, 1, 6, 7, 8, 10, 3, 9]
[0, 1, 2, 4, 5, 6, 7, 8, 10, 3, 9]
[0, 1, 2, 4, 5, 6, 7, 8, 3, 9, 10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Так как каждый раз, когда элемент вставляется в список до (n-1) числа в списке могут быть перемещены, и мы должны делать это n раз, когда алгоритм должен запускаться за O (n ^ 2) времени.
У меня была реализация Python, но я как-то ее не поместил.Я постараюсь написать это немного позже, но это довольно сложно реализовать.Любые идеи?
Реализация Python здесь: http://dpaste.com/hold/522232/. Он был написан busy_beaver с reddit.com, когда обсуждался здесь http://www.reddit.com/r/compsci/comments/ejaaz/is_this_equivalent_to_insertion_sort/