快速排序及分析

2022-08-20 07:48:14 字數 651 閱讀 8258

歸併排序將陣列分為兩個子陣列分別排序,並將有序的子陣列歸併使得整個陣列排序;

快速排序通過乙個切分元素將陣列分為兩個子陣列,左子陣列小於等於切分元素,右子陣列大於等於切分元素,將這兩個子陣列排序也就將整個陣列排序了。

public

static

void quicksort(int

list)

public

static

void quicksort(int list,int first,int

last)

}public

static

int partition(int list,int first,int

last)

while (ipivot)

if (i}

return

j; }

快速排序是原地排序,不需要輔助陣列,但是遞迴呼叫需要輔助棧。

快速排序最好的情況下是每次都正好將陣列對半分,這樣遞迴呼叫次數才是最少的。這種情況下比較次數為 cn=2cn/2+n,複雜度為 o(nlogn)。

最壞的情況下,第一次從最小的元素切分,第二次從第二小的元素切分,如此這般。因此最壞的情況下需要比較 n2/2。為了防止陣列最開始就是有序的,在進行快速排序時需要隨機打亂陣列。

快速排序演算法 vb示例及分析

快速排序對氣泡排序的一種改進。它的基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。快速排序演算法,對字串陣列進行排序 private s...

快速排序分析

1.開篇 終於還是忍不住要學習一下演算法啦,該面對的還是要面對,不能逃避,不能把已經會的技能忘掉,那是一種對生命的摧殘和不仁。不要怕,只要每天都在進步,水滴石穿,終有破雲見天日的時刻。感慨寫完了,回到正題,分析快速排序。2.原理 假設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣...

快速排序分析

首先簡單描述一下快速排序 1.快速排序樹不穩定的 由於關鍵字的比較與交換是跳躍進行的 2.時間複雜度為o n logn 最好情況為n logn 若陣列基本有序為n n 3.空間複雜度為logn 主要是遞迴造成的棧空間的使用,最好情況,遞迴樹的深度為log2n,其空間複雜度也就為o logn 最壞情況...