快速排序及其优化
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时就停止递归
改进后的代码如下:
算法思想:
选择轴值(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时就停止递归
改进后的代码如下:
相关文章推荐
- Oracle 函数
- Word排版时同时插入脚注和分栏的技巧总结
- 阿里云OSS 上传文件
- 从网络获取json后实现新闻列表界面
- 【Android】软件界面全屏显示
- 计算机图形学(一) 视频显示设备_6_三维观察设备
- lightoj 1301 - Monitoring Processes 贪心
- c语言实现输出一个数的每一位
- shell之正则
- 本地配置环境打开项目出现404/本地wampserver配置伪静态以及php.ini配置
- 导入数据到HBase的方式选择
- secureCRT,永久设置,保护眼睛,配色方案
- JayRock:JSON and JSON_RPC for .Net
- Linux基础命令
- android AsyncQueryHandler详解
- gerrit 配置
- ABP集合贴
- Python dict sort
- 《Spark MLlib机器学习实践》内容简介、目录
- 基于Linux内核定制X86平台的微操作系统