快速排序
来源:互联网 发布:linux wc l 编辑:程序博客网 时间:2024/05/16 19:29
1,基本概况
时间复杂度:O(N*log N)
空间复杂度:O(N*log N)
最坏情况:O(N^2)
不稳定
2,思想讲解
总体思想:将输入按照主元(随机选定,后面的实现中选定最后一个元素为主元)划分,使一次划分后主元在中间,左边的元素Ls全都小于主元,右边的元素Rs全都大于主元。再对Ls与Rs依据相同思想进行划分,递归进行下去直至Ls与Rs的长度为1。
3,Java实现
注:选定最后一个元素为主元
<span style="font-family:Microsoft YaHei;">public class main {public static void main(String[] args) {// TODO Auto-generated method stubint[] inputs = new int[] { 1, 6, 2, 5, 8, 6, 9, 8, 7, 1, 2, 3, 5, 56,5, 2 };quickSort(inputs, 0, inputs.length - 1);print(inputs);}public static void quickSort(int[] inputs, int start, int end) {int t = 0;if (start < end) {t = partition(inputs, start, end);if (t > start)quickSort(inputs, start, t - 1);if (t < end)quickSort(inputs, t + 1, end);}}public static int partition(int[] inputs, int start, int end) {int flag = inputs[end];int i = start;int j = start;while (inputs[i] < flag) {i++;j++;}while (j <= end) {while (inputs[j] > flag) {j++;}int t = inputs[j];inputs[j] = inputs[i];inputs[i] = t;i++;j++;}System.out.print("Partition:");print(inputs);return i - 1;}public static void print(int[] inputs) {for (int i : inputs) {System.out.print(i + " ");}System.out.println();}}</span>
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- JAVA正则表达式的使用
- 利用Tab Control创建属性页对话框
- MakeFile规则(二):自动生成依赖关系
- 红尘零落,勿忘心安!
- 赵又廷和高圆圆结婚了!
- 快速排序
- 当年惊艳的LG EnV系列全键盘手机,见过吗?
- 广州开展中心城区主要商圈户外广告统一规划
- Dialog(七)——服务(Service)中弹出Dialog
- 十一种通用滤波算法(转)
- 实例A引用实例B,java!
- 完整的头文件搜索规则是怎样的?
- Sina股票数据接口
- [转载/精华]JAVA中文显示乱码的原因