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); } }