快速排序Java实现
来源:互联网 发布:希腊棺材之谜 知乎 编辑:程序博客网 时间:2024/06/05 18:23
快速排序主题思想:
分区法+挖坑填数法。
1、先从数列中取出一个数作为枢纽关键字,一般用第一个元素
2、分区过程,将比这个枢纽关键字大的数全放在它的右边,把小于或者等于的数全放在它左边
3、再对左右分区进行第二步的操作,也就是递归。知道各个区间只有一个数为止
时间复杂度:
快速排序不断的进行递归,将比枢纽关键字小的放在左边,否则放在右边,平均情况下需要递归log2N次,在最坏情况下,即数组已经有序或大致有序的情况下,每次划分只能减少一个元素,需要递归n次,所以快速排序时间复杂度下界为O(nlogn),最坏情况为O(n^2)。在实际应用中,快速排序的平均时间复杂度为O(nlogn)。
public class Qsort {public int partition (int a[],int low,int high){int key=a[low];//int i=low;//int j=high;if(low<high){while (low<high){while (low<high&&a[high]>=key)//从右边循环直到找到比关键字小的项才退出{high--;}if (low<high) //将比关键字小的值赋值到左边{a[low]=a[high];low++;}while (low<high&&a[low]<=key) //从左边循环直到找到比关键词大的项才退出{low++;} if (low<high) //将比关键字大的值赋到右边 {a[high]=a[low];high--; } }a[low]=key;}return low;}public void lsort(int a[],int low, int high){if (low<high){int i=partition(a,low,high);lsort(a,low,i-1);lsort(a,i+1,high);}}public static void main(String[] args){ Qsort qs =new Qsort();int a[]={49,38,65,97,76,13,27,30}; qs.lsort(a,0,a.length-1);for (int i:a)System.out.println(i);}}
- java实现快速排序
- 快速排序Java实现
- 快速排序java实现
- 快速排序JAVA实现
- Java实现快速排序
- 快速排序--Java实现
- 快速排序java实现
- java实现快速排序
- java实现快速排序
- Java实现快速排序
- Java实现快速排序
- 快速排序java实现
- 快速排序Java实现
- Java实现快速排序
- java快速排序实现
- JAVA实现快速排序
- java实现快速排序
- java 实现快速排序
- 《android小技巧》setOnItemClickListener没有响应
- js的正则表达式—0-100的正整数(4)
- ===Android开发中常用工具
- dbvisualizer 9.0.8及破解方法 使用教程
- JQuery设置文本框和密码框得到焦点时的样式
- 快速排序Java实现
- 文本有关的样式和jQuery求对象的高宽问题分别说明
- 榜单
- Ext的异步请求(二级级联动态加载下拉列表)
- android intent收集转载汇总
- IOS申请证书-图文详解
- ORA-16038错误解决
- oracle用户解锁
- SpringMVC、MyBatis声明式事务管理