算法---快速排序

Posted gson-and-nana

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法---快速排序相关的知识,希望对你有一定的参考价值。

思路源自于:http://developer.51cto.com/art/201403/430986.htm

代码如下:

public class FastSort implements Sort {

public int[] array;
public int count;

public FastSort(int[] array) {
super();
this.array = array;
}

@Override
public int[] sort() {
quickSort(array,0,array.length-1);
return array;
}

public void quickSort(int[] arr,int begin,int end){
if (end<=begin) {
return;
}
int x = arr[begin];//标尺
int p1 = begin;//顺指针
int p2 = end;//逆指针
//指针发生碰撞,循环结束,标尺就移动到正确的位置
while(!(p1==p2)){
//先从后往前,如果碰到比标尺小的 就交换
while(arr[p2]>=x && p1<p2) p2--;
if (p1<p2) {
arr[p1] = arr[p2];
arr[p2] = x;
}
//再从前往后, 碰到比标尺大的, 就交换
while(arr[p1]<=x && p1<p2) p1++;
if (p1<p2) {
arr[p2] = arr[p1];
arr[p1] = x;
}
}
//递归排序标尺之前的序列和标尺之后的序列
quickSort(arr, begin, p1-1);
quickSort(arr, p1+1, end);
}
}

以上是关于算法---快速排序的主要内容,如果未能解决你的问题,请参考以下文章

十大经典排序算法总结(快速排序)

排序算法系列:快速排序算法

用C语言编程实现快速排序算法

快速选择算法(Quick Selection)

Python实现排序算法之快速排序

快速排序算法原理与实现