public class QuickSort { //打印数组 public static void print(int arry[]) { for(int i:arry) { System.out.print(i+" "); } System.out.println(); } //partition返回某一个index,在index左边的元素都比index所在元素值小,右边的都比index所在元素值大 public static int partition(int []arry,int start,int end) { int pivot=arry[start];//将首元素最为pivot while(start<end) { //找到第一个大于pivot的arry[end] while(pivot<arry[end]&&start<end) end--; arry[start]=arry[end]; //找到第一个小于pivot的arry[start] while(pivot>arry[start]&&start<end) start++; arry[end]=arry[start]; } //最后start==end以后的位置就是起始pivot存放的位置 arry[start]=pivot; //返回pivot的位置,后面按次位置分解 return start; } public static void quickSort(int []arry,int start,int end) { //判断start与end的位置 if(start>=end) return; int pivot=partition(arry,start,end); quickSort(arry,start,pivot-1); quickSort(arry,pivot+1,end); } public static void main(String[] args) { // TODO Auto-generated method stub int arry[]={5,6,2,7,1}; int len=arry.length; System.out.print("快速排序前数组元素为:"); print(arry); quickSort(arry,0,len-1); System.out.print("快速排序后数组元素为:"); print(arry); } }
快速排序
最新推荐文章于 2024-07-17 10:35:12 发布