你可以run一下这个程序,对任何n都适用

来源: 2009-07-30 20:47:50 [博客] [旧帖] [给我悄悄话] 本文已被阅读:

判断是否排好可以用反函数g(k),是O(1)。程序中已经实现了,不需要n为特殊的数。

谢谢你帮我解释,这个程序就是这么做的。很容易增加一些临时变量数组验证每个k最多只被挪动一次。

“要检查 x 的 loop 里有没有比 x 更小的位置”
这是不对的。只要x没排好,它就是loop里最小的位置。换句话说,如果x不是loop里最小位置(y是最小位置),那么x已经在排y的时候排好了。