編程的50種基礎(chǔ)算法 最高效的排序算法?
最高效的排序算法?直接插入排序:數(shù)據(jù)有序時(shí),執(zhí)行效率最高,時(shí)間復(fù)雜度為O(n);數(shù)據(jù)基本逆序時(shí),執(zhí)行效率最低,時(shí)間復(fù)雜度為O(N2)。因此,數(shù)據(jù)越接近有序,直接插入排序算法的性能越好。希爾排序:時(shí)間效
最高效的排序算法?
直接插入排序:數(shù)據(jù)有序時(shí),執(zhí)行效率最高,時(shí)間復(fù)雜度為O(n);數(shù)據(jù)基本逆序時(shí),執(zhí)行效率最低,時(shí)間復(fù)雜度為O(N2)。因此,數(shù)據(jù)越接近有序,直接插入排序算法的性能越好。希爾排序:時(shí)間效率為O(n(log2n)2)直接選擇排序:時(shí)間效率為O(n^2)-雖然移動(dòng)次數(shù)較少,但比較次數(shù)仍然較多。堆排序:時(shí)間效率是O(nlog2n)氣泡排序:時(shí)間效率是O(n^2)-因?yàn)槲覀儽仨毧紤]最壞的情況(所有數(shù)據(jù)元素的順序相反),當(dāng)然,最好的情況是所有數(shù)據(jù)元素都是按順序排列的,此時(shí),循環(huán)是n-1次,時(shí)間復(fù)雜度為O(n)快速排序:時(shí)間效率:一般情況下,時(shí)間復(fù)雜度為O(nlog2n),最壞情況是所有數(shù)據(jù)元素都是正序或逆序的。此時(shí),標(biāo)準(zhǔn)元素將當(dāng)前數(shù)組劃分為一個(gè)子數(shù)組,其大小比當(dāng)前數(shù)組小1。此時(shí),時(shí)間復(fù)雜度為O(N2)]~]。該問(wèn)題的最優(yōu)時(shí)間復(fù)雜度為O(n)。所以如果一定要使用排序算法,如果標(biāo)題條件允許,請(qǐng)盡量選擇o(n)排序算法如bucket排序。另一種解決方案是構(gòu)建一個(gè)大小為10的堆,按順序遍歷數(shù)組,并在堆滿時(shí)移除最上面的元素。這樣,最多可獲得10個(gè)元素。時(shí)間復(fù)雜度為O(nlog10)。