python冒泡排序 VB冒泡排序法和選擇排序法的優(yōu)缺點(diǎn)比較?
VB冒泡排序法和選擇排序法的優(yōu)缺點(diǎn)比較?這兩種算法效率很低。通常,我們使用一個(gè)與數(shù)據(jù)大小相關(guān)的時(shí)間漸近函數(shù)來評(píng)價(jià)算法的時(shí)間效率,即算法的時(shí)間復(fù)雜度。兩種算法的時(shí)間復(fù)雜度為O(n^2),基于比較的排序算
VB冒泡排序法和選擇排序法的優(yōu)缺點(diǎn)比較?
這兩種算法效率很低。通常,我們使用一個(gè)與數(shù)據(jù)大小相關(guān)的時(shí)間漸近函數(shù)來評(píng)價(jià)算法的時(shí)間效率,即算法的時(shí)間復(fù)雜度。兩種算法的時(shí)間復(fù)雜度為O(n^2),基于比較的排序算法的最佳復(fù)雜度為O(nlogn)。堆排序、合并排序和快速排序的預(yù)期復(fù)雜度可以達(dá)到o(在最壞的情況下,堆排序和合并排序的復(fù)雜度仍然是o(nlogn)
除了冒泡排序,還有哪些適合初級(jí)程序員學(xué)習(xí)的排序算法?
排序視情況而定。例如,如果有1到10個(gè)無序的數(shù)字,則定義一個(gè)包含10個(gè)元素的臨時(shí)數(shù)組,并將相應(yīng)的值寫入相應(yīng)的元素中。這種方法只能求解一次。再舉一個(gè)例子,如果有50個(gè)無序的數(shù)字,最大值是100,你也可以創(chuàng)建一個(gè)下標(biāo)為100的數(shù)組,循環(huán)原來的數(shù)組,把對(duì)應(yīng)的值只寫進(jìn)對(duì)應(yīng)的元素一次,然后刪除它們我試過用8W數(shù)組刪除賦值。這種方法比冒泡快多了
區(qū)別主要在于交換的方式。在每一輪中,最大或最小的元素被過濾掉并放在相應(yīng)的位置。這是相同的,但對(duì)于每一輪,如第一輪,1~n是選擇氣泡法:比較和移動(dòng)兩個(gè)相鄰的項(xiàng)目,每次選擇排序。每次交換當(dāng)前項(xiàng)和第n項(xiàng)。我來寫代碼,你就會(huì)明白:Bubble:for I:=1 to n-1 do if(a[I]>A[I 1])then swap(I,I 1)select:for I:=1 to n-1 do if(a[I]>A[n])then swap(I,n)(swap)一般來說,這兩種方法的比較時(shí)間是相同的,但交換次數(shù)較少。雖然這兩種排序的時(shí)間復(fù)雜度都是O(n^2),但通常情況下,選擇排序的速度更快