快速排序
一.概念
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
二.排序分析
三.时间复杂度和空间复杂度
四.快速排序动图
五.Java代码实现
/** * 快速排序 */ public class QuickSort { public static void main(String[] args) { int[] arrays = {4,7,6,5,3,2,8,1,9}; int length = arrays.length; new QuickSort().quickSort(arrays,0,length-1); for (int array : arrays) { System.out.println(array); } } public void quickSort(int[] array, int start, int end) { if(start >= end){ return; } int index = getIndex(array, start, end); quickSort(array, start, index-1); quickSort(array, index + 1, end); } private int getIndex(int[] array, int start, int end) { int temp; int pivot = start; int i = start; int j = end; while (i != j) { if (array[j] > array[pivot]) { j--; } else { if (array[i] <= array[pivot]) { i++; } else { temp = array[i]; array[i] = array[j]; array[j] = temp; j--; } } } temp = array[i]; array[i] = array[pivot]; array[pivot] = temp; return i; } }