您的位置:首页 > 其它

快速排序及其优化

2016-04-12 10:55 260 查看
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时就停止递归

改进后的代码如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: