堆排序和快速排序哪個(gè)快 為什么快速排序比堆排序快呢?
為什么快速排序比堆排序快呢?首先,快速調(diào)度最適合對(duì)完全隨機(jī)的數(shù)據(jù)進(jìn)行排序。此時(shí),沒(méi)有退化(只要不是非常差,也可以隨機(jī)選取主成分來(lái)避免退化)。第二,雖然這三種算法的漸近運(yùn)行時(shí)間是O(nlgn),但隱藏在
為什么快速排序比堆排序快呢?
首先,快速調(diào)度最適合對(duì)完全隨機(jī)的數(shù)據(jù)進(jìn)行排序。此時(shí),沒(méi)有退化(只要不是非常差,也可以隨機(jī)選取主成分來(lái)避免退化)。第二,雖然這三種算法的漸近運(yùn)行時(shí)間是O(nlgn),但隱藏在O中的系數(shù)快置換是最小的。第三,fast行和heap行已經(jīng)就位,這在運(yùn)行時(shí)需要額外的內(nèi)存開(kāi)銷。因此,F(xiàn)PL的整體性能是最穩(wěn)定的,也是工業(yè)上應(yīng)用最廣泛的一種。
對(duì)同一個(gè)基本有序的待排序列分別進(jìn)行堆排序、快速排序和冒泡排序?
它是冒泡排序、冒泡排序、快速排序、堆排序性能比較與排序方法比較次數(shù)移動(dòng)次數(shù)穩(wěn)定性輔助空間最佳最差最佳最差冒泡排序n^20 n^2是1 1快速排序nlogn^2 logn n n no logn堆排序nlogn nlogn no 1 1。當(dāng)要排序的序列基本上是有序的時(shí),冒泡排序是最佳情況,快速排序是最差情況,堆排序是最佳和最差情況。所以答案是氣泡排序。
快速排序和堆排序都不穩(wěn)定?
不穩(wěn)定:兩個(gè)相同大小的數(shù)字被排序,最終位置與初始位置交換??焖倥判颍?7 23 27 3以前27為軸心,然后27與后3交換形成3 23 27。排序結(jié)束一次,但最后的27不穩(wěn)定,因?yàn)樗缬谂判蜷_(kāi)始處的初始位置3,即27。堆排序:例如:3 27 36 27,如果前3級(jí)先輸出,則第三級(jí)27(最后27級(jí))運(yùn)行到堆的頂部,然后堆穩(wěn)定并繼續(xù)輸出堆的頂部,即前27級(jí)。這說(shuō)明接下來(lái)的27個(gè)輸出先于第二個(gè)27個(gè),這是不穩(wěn)定的。