快速排序-java实现
2017-08-31 23:28
162 查看
快速排序是目前现有的最优时间复杂度的排序算法,核心思想是选择一个数作为序列的基准数,将比它大的数放到右边,比它小的数放到它的左边。那么在一次循环之后,这个数的左边都比它小,右边都比它大。所以这个数对于最终结果来说,它已经放在它应该在的位置。因而我们只需要通过递归的思想对基准数左右进行相同的操作即可。所以我们得到如下代码:
其中如下方法,是以一个数为基准,将比它大的数放到它的右边,比它小的数放到它的左边,并且返回基准数位置的算法。
最终执行结果:
代码测试无误,需要的同学可以拷贝。
/** * 快速排序启动器 * @param a * @param left * @param right */ public static void quickSort(int[] a, int left, int right){ if(left < right){ int middle = getMiddle(a, left, right); quickSort(a, left, middle-1); quickSort(a, middle+1, right); } }
/** * 调整并且获得中间值的方法 * @param a * @param left * @param right * @return */ private static int getMiddle(int[] a, int left, int right) { int temp = a[left]; //此处还可以进行优化 while(left < right){ while(left < right && a[right] >= temp){ right--; } a[left] = a[right]; while(left < right && a[left] <= temp){ left++; } a[right] = temp; } return left; }
其中如下方法,是以一个数为基准,将比它大的数放到它的右边,比它小的数放到它的左边,并且返回基准数位置的算法。
int getMiddle(int[] a, int left, int right)
最终执行结果:
public static void main(String[] args) { int[] a = new int[]{3,1,5,6,4,2,5}; quickSort(a,0,6); for(int i = 0;i<a.length;i++){ System.out.print(" " + a[i]); } }
代码测试无误,需要的同学可以拷贝。
相关文章推荐
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- 【排序系列】快速排序java实现
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 快速排序Java实现
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- 快速排序Java实现
- 快速排序--Java实现
- 4、 排序有哪几种方法?请列举。并用JAVA实现一个快速排序.
- 快速排序Java实现和Javascript实现
- java(Merge) 实现归并排序,快速排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 快速排序JAVA实现
- Java实现快速排序、归并排序、堆排序
- Java下实现快速排序
- java实现快速排序
- 快速排序方法Java实现与分析
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)