排序算法之快速排序-Java-version
2016-08-03 14:40
267 查看
排序算法之快速排序-Java-version
快排采用分治的思想,具有效率高,速度快,但不稳定,适用于数据规模不是很大的数据,其平均时间复杂度是o(nlogn)。基本思路:一趟快排主要为了定位一个元素在数据有序后的最终位置,按照这个思路我们再来观察快排的过程,就能够理解其算法。我们首先找到一个基准元素,理论可以随机,但为了方便一般选取第一个,以此为基础,我们一趟快排的目的是找出比这个基准都大的数和都小的数,将小的数扔到左边,都大的数扔到右边。
/* *快速排序 *o(nlogn) */ public static void quickSort(int a[]){ if(a.length>0) fastSort(a,0,a.length-1); } public static void fastSort(int a[],int low,int high){ if(low<high){ int mid=getMiddle(a,low,high);//得到基准元素的位置 fastSort(a,0,mid-1); //基准左边递归 fastSort(a,mid+1,high); //基准右边递归 } } public static int getMiddle(int a[],int low,int high){ //取第一个元素作为基准,且使用temp来暂存基准元素的值 int temp=a[low]; while(low!=high){ //从右往左找比基准小的元素 while(low<high&&a[high]>=temp) high--; //放入比基准大的数,此时high的位置为空,准确来说是被覆盖 a[low]=a[high]; //从左往右找比基准大的数,放入high的位置 while(low<high&&a[low]<=temp) low++; a[high]=a[low]; } a[low]=temp; return low; } /* *by JacFrak */
相关文章推荐
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法Java描述:选择、冒泡、插入、希尔、归并、快速及三向切分快速排序
- 排序算法java 一 --快速排序、直接插入、希尔排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,快速排序
- java排序算法1 快速排序
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- Java排序算法(七):快速排序
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- JAVA排序算法实现代码-快速(Quick Sort)排序
- Java排序算法总结(七):快速排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- Java中的几种排序算法:冒泡排序,插入排序,二分法排序,简单排序,快速排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法--交换排序(冒泡排序、快速排序、随机快速排序)java实现
- Java实现-高效排序算法之快速排序
- java排序之冒泡、插入、选择、快速等排序算法
- 排序算法之快速排序Java版