我对 i 这层循环演算了一下,初步明白怎么回事了。
i = 1 时,内层循环 j = 1 to n 把最大值移到了 a[1].
i > 1 时,可以证明循环开始时最大的数位于 a[i-1] 从而 j 到了 i-1 的时候,会将最大的数移到 a[i],从而后面的比较 a[i] < a[j] 都为 false. 于是这个两层循环等价于以下的代码。
// i = 1
for j = 1 to n
if a[j] > a[1]
swap a[j],a[1]
for i = 2 to n
for j = 1 to i - 1
if a[j] > a[i]
swap a[j],a[i]
之后只需要研究后面这个算法的性质就行了。
更新:基本搞明白了,这其实就是个插入排序,看我后面的帖子。
【 在 foliver (Oliver) 的大作中提到: 】
: 把数组从小往大按升序排列。下面是伪代码。
: for i = 1 to n
: do for j = 1 to n
: ...................
--
修改:ArchLinux FROM 103.90.178.*
FROM 103.90.178.*