运用“挖坑法”实现java的快速排序
//定义一个快排的类 class QuickSorts{ //快速排序方法,传入所要排序的数组 public void quickSort(int[] arr){ subQuickSort(arr,0,arr.length-1); } //递归的去不断划分小的排序范围 public void subQuickSort(int[] arr, int start, int end){ if(start>=end){ return; } int midNum = subQuickSortCore(arr,start,end); subQuickSort(arr,start,midNum-1); subQuickSort(arr,midNum+1,end); } //计算出每一次的中间值 public int subQuickSortCore(int[] arr,int start,int end){ //将数组第一个数当成中间值的初始值 int midNum = arr[start]; while(start<end){ //当数组最后一位大于或者等于midNum时,end向前移动 while(arr[end] >= midNum && start<end){ end--; } //当end所对应的值小于midNum时,将end的值赋值给start arr[start] = arr[end]; //当数组start对应的数小于或者等于midNum时,start向后移动 while (arr[start] <= midNum && start<end){ start++; } //当start所对应的值大于midNum时,将start的值赋值给end arr[end] = arr[start]; } arr[start] = midNum; return start; } } //测试类 public class QuickSort { public static void main(String[] args) { int[] arr = {0,4,6,8,7,5,3,2,9,1}; QuickSorts quickSort = new QuickSorts(); quickSort.quickSort(arr); for (int i:arr ) { System.out.print(arr[i]+"、"); } } }
运行结果图: