jackylee2010 发表于 2015-4-4 10:32 
我的意思,递归的思路应该是 每递归一次,都应该 return一下结果吧。
如果时递归完,再给出最后的结果就 ...
举个简单例子,对 (4, 2, 5, 1, 3) 排序。
第1次调用qs()函数时,pivot = 4, SV1 = (2, 1, 3), SV2 = (5).
这时对SV1 = (2, 1, 3)调用qs()函数,pivot' = 2, SV1' = (1), SV2' = (3).
再对SV1' = (1)调用qs()函数,因为长度为1,直接返回原值;
同样的对SV2' = (3)调用qs()函数也返回原值。
所以SV1 = qs(SV1)得到的结果就是SV1 = (SV1', pivot', SV2') = (1, 2, 3);
SV2 = qs(SV2)很容易看出结果是SV2 = (5).
回到第1层调用,返回结果(SV1, pivot, SV2) = (1, 2, 3, 4, 5),得到正确排序。