标签:imp count int end 快速排序 .com this htm 排序 序列
思路源自于: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);
}
}
标签:imp count int end 快速排序 .com this htm 排序 序列
原文地址:https://www.cnblogs.com/gson-and-nana/p/8758911.html