一种想法是从小到大排,每次把一个loop 里的排好,然后排下一个位置 x 的时候, 要检查 x 的 loop 里有没有比 x 更小的位置, 如果有, x 应该已经排好了; 如果没有,就排 x 这个 loop. 这个算法的问题是不一定能在常数时间内检查 x 的 loop 里有没有比 x 更小的位置。
n 为比较特殊的数,比如 2m, 或者 2m -1, 的时候, 似乎这个检测相对简单.
主要是难以判断一个位置有没有排好。
所有跟帖:
•
你可以run一下这个程序,对任何n都适用
-说了就走-
♂
(357 bytes)
()
07/30/2009 postreply
20:47:50
•
你一直在假设a[k]=k。没有这个假设你的算法不成立
-康MM-
♀
(0 bytes)
()
07/31/2009 postreply
07:14:51
•
那么请问你的假设是什么?
-说了就走-
♂
(216 bytes)
()
07/31/2009 postreply
18:16:46
•
还是问冬瓜太郎吧,他说可以就可以
-康MM-
♀
(177 bytes)
()
08/02/2009 postreply
10:25:52
•
你说得很有道理
-说了就走-
♂
(2675 bytes)
()
08/02/2009 postreply
13:50:02
•
我还是觉得我们在说两件不同的事
-康MM-
♀
(0 bytes)
()
08/06/2009 postreply
17:49:24