快速排序(Quicksort),因其排序之快而得名,虽然Ta的平均时间复杂度也是O(nlgn),但是从后续仿真结果看,TA要比归并排序和堆排序都要快。
快速排序也用到了分治思想。
(一)算法实现
1 protected void quicksort(int[] array, int first, int last) { 2 3 int pivot = array[first]; 4 int i = first; 5 int j = last - 1; 6 boolean serachBig = true; 7 while (i < j) { 8 if (serachBig) { 9 if (array[j] < pivot) { 10 array[i] = array[j]; 11 i++; 12 serachBig = false; 13 } else { 14 j--; 15 } 16 } else { 17 if (array[i] > pivot) { 18 array[j] = array[i]; 19 j--; 20 serachBig = true; 21 } else { 22 i++; 23 } 24 } 25 } 26 array[i] = pivot; 27 28 if (i - first > 1) { 29 quicksort(array, first, i); 30 } 31 if (last - i > 2) { 32 quicksort(array, i + 1, last); 33 } 34 }