正文
01代码实例
/** * @date : 2019/03/29 */ public class QuickSort { public static void main(String[] args) { int[] array = {3, 0, 7, 19, 4, 10, 7, 6, 11}; quickSort(array, 0, array.length-1); for (int item : array) { System.out.println(item); } } public static void quickSort(int array[], int start, int end) { int i = start; int j = end; if (start >= array.length) return; if (end <= 0) return; int temp = array[start]; if (start >= end) return; while (i != j) { while (i < j && array[j] >= temp) j--; if (j > i) array[i] = array[j]; while (i < j && array[i] <= temp) i++; if (i < j) array[j] = array[i]; } array[i] = temp; quickSort(array, start, i - 1); quickSort(array, i + 1, end); } }
02性能分析
(1)时间复杂度分析
快速排序最好情况下的时间复杂度为O(nlogn),待排序列越接近无序,本算法效率越高。最坏情况下的时间复杂度为O(n2),待排序列越接近有序,本算法效率越低。平均时间复杂度为O(nlogn)。就平均时间而言,快速排序是所有排序算法中最好的。快速排序的排序趟数与初始序列有关。
(2)空间复杂度分析
本算法空间复杂度为O(logn)。快速排序是递归进行的,递归需要栈的辅助,因此它需要的辅助空间较多。