import java.util.Random;
public class ArraySort{
static int count=1;
public static void sort(int left,int right,int a[]){
//确定递归的返回条件
if(left>=right)return;
int i,j;
int x=a[right];
for(i=left,j=left;i<=right;i++){
if(a[i]<x)
//比x小的放到a[j]前面,大的放到a[j]后i
//这里使用i遍历数组,使用j作为已经确定好位置的参数下标
//参数下标从最左端开始,没发现一个比x小的数,就将其存入a[j]中
//在j++
{int temp=a[j];
a[j]=a[i];
a[i]=temp;
j++;
}
}
//将作对比的数x放到a[j]处
//这样a[j]的左边都是比自己小的数,右边都是比自己大的数
a[right]=a[j];
a[j]=x;
int mid =j;
//这里我们让每次排序过程都显示出来
System.out.println("第"+(count++)+"次排序");
show(a);
sort(left,mid-1,a);
sort(mid+1,right,a);
}
public static void show(int arr[]){
int flag=0;
for(int i=0;i<arr.length;i++){
if(flag!=0)System.out.print("\t");
System.out.print(arr[i]);
flag=1;
}
System.out.print("\n");
}
public static void main(String args[]){
Random rd=new Random(100);
int arr[]=new int[10];
for(int i=0;i<arr.length;i++){
arr[i]=rd.nextInt(100);
}
System.out.println("排序前");
show(arr);
sort(0,arr.length-1,arr);
System.out.println("排序后");
}
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布