import java.util.Random;
public class QuickSort {
public static void quickSort(int[] a,int low,int high){
//终止条件
if(low>high){
return;
}
//确定中值
int mid=getMiddle(a,low,high);
//递归排序小于中值的部分
quickSort(a,low,mid-1);
//递归排序大于中值的部分
quickSort(a,mid+1,high);
}
public static int getMiddle(int[] a,int low,int high){
//选择中值
int temp=a[low];
//将小于中值的放到中值的左边,大于中值的放到中值的右边
while (low<high){
while (low<high&&a[high]>=temp){//注意等号
high--;
}
a[low]=a[high]; //比temp小的移到底端
while (low<high&&a[low]<=temp){//注意等号
low++;
}
a[high]=a[low];//比temp大的移动至上方
}
//将中值放到中间位置上
a[low]=temp;
//返回中值的位置
return low;
}
public static void main(String[] args) {
int[] a=new int[55];
Random random = new Random(4);
for(int i=0;i<a.length;i++){
a[i]=random.nextInt(100);
}
quickSort(a,0,a.length-1);
for (int i:a) {
System.out.println(i);
}
}
}
import java.util.Random; public class QuickSort { public static void quickSort(int[] a,int low,int high){ //终止条件 if(low>high){ return; } //确定中值 int mid=getMiddle(a,low,high); //递归排序小于中值的部分 quickSort(a,low,mid-1); //递归排序大于中值的部分 quickSort(a,mid+1,high); } public static int getMiddle(int[] a,int low,int high){ //选择中值 int temp=a[low]; //将小于中值的放到中值的左边,大于中值的放到中值的右边 while (low<high){ while (low<high&&a[high]>=temp){//注意等号 high--; } a[low]=a[high]; //比temp小的移到底端 while (low<high&&a[low]<=temp){//注意等号 low++; } a[high]=a[low];//比temp大的移动至上方 } //将中值放到中间位置上 a[low]=temp; //返回中值的位置 return low; } public static void main(String[] args) { int[] a=new int[55]; Random random = new Random(4); for(int i=0;i<a.length;i++){ a[i]=random.nextInt(100); } quickSort(a,0,a.length-1); for (int i:a) { System.out.println(i); } } }