排序算法六:快速排序
排序效率在同为O(N*logN)的几种排序方法中效率较高 思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 平均时间复杂度: nlog2n ,空间复杂度: log2n,不稳定 public class QuickSort { /** * 快速排序 * @param arr:数组名 * @param leftbound:数组的起始下标 * @param rightbound:数组的结束下标 */ public void sort ( int [ ] arr , int leftbound , int rightbound ) { if ( leftbound >= rightbound ) return ; int mid = partition ( arr , leftbound , rightbound ) ; //轴的位置 sort ( arr , leftbound , mid - 1 ) ; //对轴前面的数进行快排 sort ( arr , mid + 1 , rightbound ) ; //对轴后面的数进行快排 } /** * 将数与轴的位置的数进行大小比较,小的数在轴的前面,大的数在轴的后面 * 左