/*
* 快速排序:
* 1,首先选定数组的一个坐标
* 2,将次坐标所对应的值与数组中其他的值进行比较,比他大的放在他的右边,比他小的放在他的左边
* 3,将2所分得的两个区分别进行第2步所做的操作
*/
public class QuickSort {
public static int partition(int n[],int left,int right){
int pvoid=n[left];
int point;
while(left<right){
while(left<right &&n[right]>=pvoid){
right--;
}
if(left<right && n[right]<pvoid){
n[left]=n[right];
n[right]=pvoid;
left++;
}
while(left<right && n[left]<=pvoid){
left++;
}
if(left<right && n[left]>pvoid){
n[right]=n[left];
n[left]=pvoid;
right--;
}
}
return left;
}
public static void quicksort(int[] n,int left,int right){
int dp;
if(left<right){
dp=partition(n,left,right);
quicksort(n,left,dp-1);
quicksort(n,dp+1,right);
}
}
public static void main(String[] args){
int[] n={2,3,3,1,0,5,7,1};
quicksort(n,0,n.length-1);
System.out.println("输出");
for(int i=0;i<n.length;i++){
System.out.print(n[i]+" ");
}
}
}
数据结构之快排
最新推荐文章于 2022-09-05 14:23:08 发布