public class Test1 {
//一次快排算法
public static int Partition(int arr[],int left,int right)
{
//以第一个元素为基准将序列划分开,左侧均不大于它,右侧均不小于它
int pivot = arr[left];
while(left<right)
{
while(left<right&&pivot<=arr[right]) //将比枢纽值小的移到左端
right--;
arr[left] = arr[right];
while(left<right&&pivot>=arr[left]) //将比枢纽值大的移到右端
left++;
arr[right] = arr[left];
}
arr[left] = pivot;
return left; //返回最后基准值的位置
}
//快速排序算法
public static void QuickSort(int arr[],int left,int right)
{
if(left<right) //递归跳出条件
{
int q=Partition(arr,left,right); //左右划分
//递归对左右快排
QuickSort(arr,left,q-1);
QuickSort(arr,q+1,right);
}
}
//打印数组值
public static void Print(int arr[])
{
System.out.print("{");
for (int i=0; i<arr.length; i++ )
{
if(i != arr.length-1)
System.out.print(arr[i]+",");
else System.out.print(arr[i]);
}
System.out.println("}");
}
public static void main(String[] args)
{
int[] arr = {8,3,7,10,3,37,2};
System.out.print("原序列=");
Print(arr);
QuickSort(arr,0,6);
System.out.print("排序后=");
Print(arr);
}
}