java快速排序实现
来源:互联网 发布:unity3d 路径动画 编辑:程序博客网 时间:2024/05/20 16:36
基本思想
选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,
将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其
排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分
步骤
1.从数列中挑出一个元素,称为 “基准”(pivot),
2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去
图解
Java实现
public class QuickSort {public int getMiddle(int[] list, int low, int high) { int tmp = list[low]; // 数组的第一个作为中轴while (low < high) { //当low >= high 递归结束while (low < high && list[high] >= tmp) {high--; //高位置减1}list[low] = list[high]; // 比中轴小的记录移到低端while (low < high && list[low] <= tmp) {low++; //低位加1}list[high] = list[low]; // 比中轴大的记录移到高端}list[low] = tmp; // 中轴记录到尾return low; // 返回中轴的位置}public void _quickSort(int[] list, int low, int high) { //递归if (low < high) {int middle = getMiddle(list, low, high); // 将list 数组进行一分_quickSort(list, low, middle - 1); // 对低字表进行递归排_quickSort(list, middle + 1, high); // 对高字表进行递归排}}public void quick(int[] a2) { if (a2.length > 0) { //查看数组是否为空 _quickSort(a2,0, a2.length - 1); //程序入口开始递归 } }}JDK1.7 JAVA Arrays内部使用的是双轴快速排序 ,比较复杂。。一次利用两个数进行对比
0 0
- java实现快速排序
- 快速排序Java实现
- 快速排序java实现
- 快速排序JAVA实现
- Java实现快速排序
- 快速排序--Java实现
- 快速排序java实现
- java实现快速排序
- java实现快速排序
- Java实现快速排序
- Java实现快速排序
- 快速排序java实现
- 快速排序Java实现
- Java实现快速排序
- java快速排序实现
- JAVA实现快速排序
- java实现快速排序
- java 实现快速排序
- 直接插入排序 :Java实现
- List<String>Sort
- iOS开发之GCD使用总结
- 希尔排序:Java(最小增量排序)
- Spark学习体会
- java快速排序实现
- Android 实战 - 个人App乐逗项目(查看网页链接封装,播放视频封装)
- Binary Tree Upside Down
- LeetCode Regular Expression Matching
- 常用排序算法稳定性、时间复杂度分析
- 乐视推相亲节目,“十周嫁出去”为何深得网友支持?
- 显示Intent和隐式Intent的区别
- 欢迎使用CSDN-markdown编辑器
- c++头文件