JAVA排序算法大整理——快速排序
2018-03-14 17:19
239 查看
各种排序算法的比较:来源《数据结构与STL》 北京邮电大学出版社 肖波 徐雅静
1.快速排序
2.归并排序
----------------快速排序
(1)快速排序是一种不稳定的排序。
最佳时间复杂度O(nlogn):最好情况是当每次划分时左侧序列和右侧序列的长度相等时
最坏时间复杂度O(n^2):最坏情况是当待排序元素为逆序或正序时。
平均来说:快速排序算法的时间复杂度为O(nlogn),栈的深度为O(logn),这里的log是以2为底。
辅助空间:O(nlogn)~O(n)
转载自https://www.cnblogs.com/coderising/p/5708801.html
算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo和hi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lo和hi位置的值,如此往复循环,直到lo>=hi,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。
1.快速排序
2.归并排序
java中归并排序比快速排序快吗?https://www.zhihu.com/question/24727766
3.选择排序----------------快速排序
(1)快速排序是一种不稳定的排序。
最佳时间复杂度O(nlogn):最好情况是当每次划分时左侧序列和右侧序列的长度相等时
最坏时间复杂度O(n^2):最坏情况是当待排序元素为逆序或正序时。
平均来说:快速排序算法的时间复杂度为O(nlogn),栈的深度为O(logn),这里的log是以2为底。
辅助空间:O(nlogn)~O(n)
转载自https://www.cnblogs.com/coderising/p/5708801.html
算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo和hi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lo和hi位置的值,如此往复循环,直到lo>=hi,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。
public static int Partition(int []array,int lo,int hi){ //固定的切分方式 int key=array[lo]; while(lo<hi){ while((lo<high) && (array[hi]>=key)){//从右半部分向前扫描,保持lo不变,向左移动hi hi--; } array[lo]=array[hi];//赋值即可,因为已经记下了key while((lo<high) && (array[lo]<=key)){从左半部分向后扫描,保持hi不变,向右移动lo lo++; } array[hi]=array[lo];//赋值即可,因为已经记下了key } array[hi]=key; return hi; }
public static void Qsort(int[] array,int lo ,int hi){
if(lo>=hi) return ;
int index=Partition(array,lo,hi);
Qsort(array,lo,index-1);
Qsort(array,index+1,hi); }
public static void main(String[] args){
int[] array={1,3,2,8,5,9,6}; Qsort(array,0,array.length-1); }
相关文章推荐
- JAVA中排序算法(冒泡排序、选择排序、插入排序、快速排序)
- 排序算法之快速排序(JAVA)
- 排序算法之——快速排序(Java实现)
- Java:排序算法整理
- JAVA 排序算法整理总结,看了这个保你理解
- 整理排序算法 java
- Java数组排序算法,冒泡,选择,插入,快速排序
- 排序算法(Java语言)——快速排序
- 排序算法——交换排序(冒泡排序、快速排序)(java)
- Java技术栈(2)排序算法(冒泡,快速排序)
- [Java]各种排序算法整理(更新中。。。)
- 排序算法整理之快速排序
- 【排序算法】快速排序原理及Java实现
- Java排序算法(四):快速排序
- 排序算法之快速排序(java实现)
- 【排序算法】快速排序(java实现)
- java各种排序算法整理
- 排序算法(六):JAVA实现快速排序
- 分治法在排序算法中的应用(JAVA)--快速排序(Lomuto划分、Hoare划分、随机化快排)
- 【Java常用排序算法】交换排序(冒泡排序、快速排序)