package quicksort;
public class QStest {
public int partition(int[] a,int low,int high) //分割数组找到基准数的位置
{
int key=a[low],i=low,j=high;
while(i<j) //当i==j时,说明找到基准数的位置
{
while(i<j && a[j]>=key)
j--;
if(i<j)
a[i++]=a[j]; //使用覆盖
//swap(a,i++,j); //使用交换方式
while(i<j && a[i]<=key)
i++;
if(i<j)
a[j--]=a[i];
//swap(a,i,j--);
}
a[i]=key; //覆盖后在i位置上就将key插入就可以了
return i; //返回基准数的位置i
}
public void quicksort(int[] a,int low,int high)
{
int dest=0;
if(low<high)
{
dest=partition(a,low,high); //返回基准数的位置
quicksort(a,low,dest-1); //再对基准数位置左右的子数组进行递归,当low==high时,子数组就已经有序了
quicksort(a,dest+1,high); //所有子数组有序之后,就相当于整个数组(即原数组)就有序了
}
}
public void swap(int[] a, int i, int j) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public void print(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
if(i!=arr.length-1)
System.out.print(arr[i]+" ");
else
System.out.println(arr[i]);
}
}
public static void main(String[] args)
{
int[] arr={24,65,70,44,43,98};
QStest qs=new QStest();
qs.quicksort(arr, 0, arr.length-1);
qs.print(arr);
}
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布