1 快速排序的java代码实现
算法思想:
选择轴值(pivot)
将序列划分成两个子序列L和R,使得L中所有记录都小于等于轴值,R中记录都大于轴值
对子序列L和R递归进行快速排序
其中selectPartion方法的代码为:
使用了最简单的选择中间的值,具体选择方法还可以自行定义
partion函数的java代码为:
算法分析:
不稳定
最差情况:
时间代价:O(n^2)
空间代价:O(n)
最佳情况:
时间代价:O(n*logn)
空间代价:O(logn)
平均情况:
时间代价:O(n*logn)
空间代价:O(logn)
2 快速排序优化
当快速排序的子数组小于某个长度时,不继续递归,最后对整个数组进行一次插入排序
经验表明:
最好的组合方式是当n(子数组的长度)小于等于16时就停止递归
改进后的代码如下: