/**********************************************************
快速排序的運(yùn)行時(shí)間與劃分是否對(duì)稱有關(guān)。 1.其最壞情況是在劃分的過程中產(chǎn)生兩個(gè)區(qū)域分別包含 1 個(gè)和 n - 1 個(gè)元素的時(shí)候。由于partition的計(jì)算時(shí)間為 O(n) , 所以 如果算法partition每次都出現(xiàn)這種不對(duì)稱的劃分,復(fù)雜度為O(n^2)。 2.最好和平均都是 O(nlogn) 。 **********************************************************/ import java.util.Arrays; public class QuickSort { public static void quickSort(int[] a, int p, int r) { if (p < r) { int q = partition(a, p, r); quickSort(a, p, q - 1); //對(duì)左半段排序 quickSort(a, q + 1, r); //對(duì)右半段排序 } } private static void swap(int[] a, int i, int j) { private static int partition(int[] a, int p, int r) { while (a[j] > u) { public static void main(String[] args) { |
|