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

回答: 我觉得我解释不清楚说了就走2009-07-30 11:56:00

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

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

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

所有跟帖: 

你一直在假设a[k]=k。没有这个假设你的算法不成立 -康MM- 给 康MM 发送悄悄话 康MM 的博客首页 (0 bytes) () 07/31/2009 postreply 07:14:51

那么请问你的假设是什么? -说了就走- 给 说了就走 发送悄悄话 说了就走 的博客首页 (216 bytes) () 07/31/2009 postreply 18:16:46

还是问冬瓜太郎吧,他说可以就可以 -康MM- 给 康MM 发送悄悄话 康MM 的博客首页 (177 bytes) () 08/02/2009 postreply 10:25:52

你说得很有道理 -说了就走- 给 说了就走 发送悄悄话 说了就走 的博客首页 (2675 bytes) () 08/02/2009 postreply 13:50:02

我还是觉得我们在说两件不同的事 -康MM- 给 康MM 发送悄悄话 康MM 的博客首页 (0 bytes) () 08/06/2009 postreply 17:49:24

请您先登陆,再发跟帖!