public class QuickSort {
/*一趟快速排序的算法
* 将一个序列再一趟排序后分成两个部分,左边比设定值小,右边比设定值大。
* 再对两部分分别递归进行一趟快速排序
* */
public int sort(Integer[] data,int left,int right){
int mid = data[left];
while(left<right){
//当最右边
while(data[right]>=mid&&left<right){
right--;
}
if(left<right){
data[left] = data[right];
left++;
}
while(data[left]<mid&&left<right){
left++;
}
if(left<right){
data[right] = data[left];
right--;
}
}
data[left] =mid;
return left;
}
public void quickPass(Integer[] data,int left,int right){
if(left<right){
int p = sort(data, left, right);
quickPass(data, left, p-1);
quickPass(data,p+1,right);
}
}
public static void main(String[] args) {
Integer[] data ={48,62,35,77,55,14,35,98};
QuickSort quickSort = new QuickSort();
quickSort.quickPass(data, 0, data.length-1);
for(Integer i: data){
System.out.print(i+" ");
}
System.out.println(" ");
for(int i =0;i<data.length;i++){
System.out.print(data[i]+" ");
}
}
快速排序java
最新推荐文章于 2016-09-21 14:34:04 发布