标签:java快速排序
//快速排序思想:选择数组最后一个数(key),比它小的排他前面 ( key放中间 ) 比它大的排后面,
然后递归 终止条件(数组只有一个数)
public class Sort<T extends Comparable<T>> { //能排序的都是能比较的,所以必须继承java.lang.Comparable
public void quick(T[] array){
sort(array,0,array.length-1);
}
private void sort(T[] array ,int left,int right){
if(left<right){
int p=partition(array,left,right);
sort(array,left,p-1);
sort(array,p+1,right);
}
}
private int partition(T[] array,int left,int right){
int i=left-1;
for(int j=left;j<right;j++)
{
if(array[j].compareTo(array[right])<=0)
{
i++; // 理解 int i=left-1 和 return i+1; 细节细节!!!需要自己体会
swap(array,i,j);
}
}
swap(array,i+1,right); // 把key 插入
return i+1;
}
private void swap(T[] array, int i,int j){
T t=array[i];
array[i]=array[j];
array[j]=t;
}
}标签:java快速排序
原文地址:http://blog.csdn.net/u013107634/article/details/38519171