java 排序算法实现 其四:快速排序
来源:互联网 发布:软件外包公司分录 编辑:程序博客网 时间:2024/05/17 03:45
快速排序使用的思想是分治法,基本思想是选定一个基准值,所有大于它的值都放在左边,小于它的值都放在右边,递归实现整个数列的排序。
快速排序是一种性能比较优越的排序方法,平均的时间复杂度是O(nlogn),最坏的时候的复杂度是O(n^2)。
具体的步骤是:
1、从数列中挑出一个元素,称为 “基准”(pivot),
2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3、递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
快速排序的实现,下面用代码说明:
Java版:
// 快排算法private void quickSort(int[] arr, int left, int right) {if (left < right) {int middleNum = getMiddle(arr, left, right); // 获取基准值所在的指针的位置quickSort(arr, left, middleNum - 1); // 对基准值左边的数列进行排序quickSort(arr, middleNum + 1, right); // 对基准值右边的数列进行排序}}// 获取基准值所在的指针的位置private int getMiddle(int[] arr, int left, int right) {int tmp = arr[left]; // 数组的第一个作为中轴while (left < right) {while (left < right && arr[right] >= tmp) {right--;}arr[left] = arr[right]; // 比中轴小的记录移到低端while (left < right && arr[left] <= tmp) {left++;}arr[right] = arr[left]; // 比中轴大的记录移到高端}arr[left] = tmp; // 中轴记录到尾return left; // 返回中轴的位置}
0 0
- java 排序算法实现 其四:快速排序
- 用JAVA实现排序算法之四:快速排序
- Java排序算法(四):快速排序
- java实现快速排序算法
- java实现快速排序算法
- 算法-快速排序-java实现
- 快速排序算法Java实现
- java算法实现快速排序
- java实现快速排序算法
- 快速排序算法-java实现
- 快速排序算法Java实现
- 快速排序算法java实现
- java实现快速排序算法
- Java实现快速排序算法
- 快速排序算法Java实现
- Java实现快速排序算法
- 快速排序算法java实现
- java实现快速排序算法
- vmware下的桥接设置
- Spring之IOC
- 中国的悲哀:电视剧原来是这样审查的!瞬间跪了!
- 面试题-反转链表
- javaweb里面的状态码解析。
- java 排序算法实现 其四:快速排序
- 为了双11写了几个来替代手工的瑕疵品
- 1060: 鹊桥相会
- 混合图欧拉回路 POJ 1637
- mysql 忘记了 root 密码
- hdu2196——Computer
- POJ 2777 count color(线段树,lazy标记)
- 360公司2015年秋季校园招聘笔试考卷(技术类 D)部分试题程序验证和解析5
- 我的CSDN主页开启了