我们来分析一下快速排序法的性能。
快速排序的时间性能取决于快速排序递归的深度,
可以用递归树来描述递归算法的执行情况。
如图9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序过程中的递归过程。由于我们的第一个关键字是50,正好是待排序的序列的中间值,因此递归树是平衡的,此时性能也比较好。
空间复杂度,
主要是递归造成的栈空间的使用,最好情况,递归树的深度为logn
其空间复杂度也就为 O(logn),
最坏情况,
需要进行n‐1递归调用,其空间复杂度为O(n),
平均情况,
空间复杂度也为O(logn)。
可惜的是,由于关键字的比较和交换是跳跃进行的,因此,
快速排序是一种不稳定的排序方法。