为什么使用堆栈进行快速排序递归?

首先要明确的是,每当调用一个函数时,肯定需要一个堆栈来保存调用函数的当前执行状态等信息。

快速排序是递归的,在排序过程中会不断调用自己(作为函数参数,要排序的序列长度在缩短),所以需要借助工作栈保存每次递归调用的必要信息。

堆栈容量:

①最好的情况是每次PivotPos在序列中间时,堆栈深度=?日志?(n+1)?;

(2)最坏的情况是每次PivotPos在序列的两端,堆栈深度=n-1。