纪录开始的位置为初始为止,最终位置为结束位置。
从A1开始,依次向右检查。
如果该数和初始位置不对应,跳过该数。
否则:纪录该数位置。从它开始,依次把数放到结束位置,并且把结束位置的数置换出来。检查结束位置是否为纪录,如果是则跳过(一个循环完成)
只要初始位置和结束位置计算时间是常数,这个算法就应该是线性时间,同时占用常数内存
• 计算时间是否常数(或平均是常数), 不是很明显。 -乱弹- ♂ (0 bytes) () 07/27/2009 postreply 21:25:41
• 似乎很明显 -说了就走- ♂ (183 bytes) () 07/28/2009 postreply 16:07:49
• 主要问题是只能用const memory -康MM- ♀ (88 bytes) () 07/28/2009 postreply 16:37:05
• 似乎没有那么复杂 -说了就走- ♂ (803 bytes) () 07/29/2009 postreply 21:45:44
• 回复:似乎没有那么复杂 -康MM- ♀ (104 bytes) () 07/30/2009 postreply 07:33:36
• 我觉得我解释不清楚 -说了就走- ♂ (1593 bytes) () 07/30/2009 postreply 11:56:00
• 主要是难以判断一个位置有没有排好。 -乱弹- ♂ (355 bytes) () 07/30/2009 postreply 17:30:25
• 你可以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