判断是否排好可以用反函数g(k),是O(1)。程序中已经实现了,不需要n为特殊的数。 谢谢你帮我解释,这个程序就是这么做的。很容易增加一些临时变量数组验证每个k最多只被挪动一次。 “要检查 x 的 loop 里有没有比 x 更小的位置” 这是不对的。只要x没排好,它就是loop里最小的位置。换句话说,如果x不是loop里最小位置(y是最小位置),那么x已经在排y的时候排好了。