快排应该是平时使用的最多的一种排序了,这里实现的快排是一种未经改良的简单快排。
快排的思想是,使用二分法找到一个中间基准值,然后将序列分成小于和大于两部分,对这两部分再分别进行快排。
public class QuickSort {
int[] queue = new int[]{5,3,15,0,1,29,14,4,3,2,0};
public void quickSortTest(){
print();
quickSort(0,queue.length-1);
print();
}
public void print(){
int length = queue.length;
int index;
for(index=0;index<length;index++){
System.out.print(queue[index]+" ");
}
System.out.println();
}
public void quickSort(int left,int right){
if(left<right){
int pivotpos = Partition(left,right);
quickSort(left,pivotpos-1);
quickSort(pivotpos+1,right);
}
}
public int Partition(int low,int high){
int pivotpos = low;int pivot = queue[low];
int i;
for(i=low+1;i<=high;i++)
if(queue[i]<pivot){
pivotpos++;
if(pivotpos!=i){swap(pivotpos,i);}
}
queue[low]=queue[pivotpos];queue[pivotpos]=pivot;
return pivotpos;
}
public void swap(int i,int j){
int temp = queue[i];
queue[i] = queue[j];
queue[j] = temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
QuickSort qs = new QuickSort();
qs.quickSortTest();
}
}