堆排序與快速排序比較 為什么快速排序比堆排序快呢?
為什么快速排序比堆排序快呢?首先,快速調(diào)度最適合對完全隨機(jī)的數(shù)據(jù)進(jìn)行排序。此時(shí),沒有退化(只要不是非常差,也可以隨機(jī)選取主成分來避免退化)。第二,雖然這三種算法的漸近運(yùn)行時(shí)間是O(nlgn),但隱藏在
為什么快速排序比堆排序快呢?
首先,快速調(diào)度最適合對完全隨機(jī)的數(shù)據(jù)進(jìn)行排序。此時(shí),沒有退化(只要不是非常差,也可以隨機(jī)選取主成分來避免退化)。第二,雖然這三種算法的漸近運(yùn)行時(shí)間是O(nlgn),但隱藏在O中的系數(shù)快置換是最小的。第三,fast行和heap行已經(jīng)就位,這在運(yùn)行時(shí)需要額外的內(nèi)存開銷。因此,F(xiàn)PL的整體性能是最穩(wěn)定的,也是工業(yè)上應(yīng)用最廣泛的一種。
堆排序,歸并排序,快速排序的比較,到底誰快?
我測試的平均排序時(shí)間是:數(shù)據(jù)是一個(gè)隨機(jī)整數(shù),時(shí)間單位是秒
數(shù)據(jù)規(guī)模快速排序合并排序希爾排序堆排序]1000萬0.75 1.22 1.77 3.57
5000萬3.78 6.29 9.48 26.54
100萬7.65 13.06 18.79 61.31
堆排序最差。
這是一個(gè)算法障礙。不可能。因?yàn)槊看稳∽畲笾挡⑴c堆底部的數(shù)據(jù)(表示為x)交換時(shí),都可以重新篩選堆并調(diào)整堆頂部的x。很有可能您仍會將其調(diào)整到堆的底部(堆底部的x顯然是一個(gè)小數(shù)字,僅在底部),然后將其與堆頂部的最大值交換并再次調(diào)整。
從上面可以看出,堆排序做了很多無用的工作。
在快速排序、堆排序、歸并排序中,什么排序是穩(wěn)定的?
對同一個(gè)基本有序的待排序列分別進(jìn)行堆排序、快速排序和冒泡排序?
它是冒泡排序、冒泡排序、快速排序、堆排序性能比較與排序方法比較次數(shù)移動次數(shù)穩(wěn)定性輔助空間最佳最差最佳最差冒泡排序n n^20 n^2是1 1快速排序nlogn^2 logn n no logn堆排序nlogn nlogn no 1 1。當(dāng)要排序的序列基本上是有序的時(shí),冒泡排序是最佳情況,快速排序是最差情況,堆排序是最佳和最差情況。所以答案是氣泡排序。