十大排序(C++版)--冒泡排序(BubbleSort)
????????冒泡排序是初學(xué)者最常用的算法,也是較為簡(jiǎn)單的一種算法。在長(zhǎng)度為n的數(shù)組中其實(shí)現(xiàn)原理就是將數(shù)組中的數(shù)兩兩進(jìn)行比較,把較大的值往后放,比較n-1次后整個(gè)數(shù)組就是有序的了。由于整個(gè)過程是將大的數(shù)往后放,類似于氣泡冒出水面,因此稱為冒泡排序。代碼如下:
我們有一個(gè)這樣的數(shù)組:[5,3,8,6,9,2,1,4,7]
為了方便看到整個(gè)冒泡排序的過程,這里將每步的變化都打印出來


在第一遍循環(huán)結(jié)束后,9因?yàn)槭亲畲蟮乃员环诺搅俗詈笠晃?。因?yàn)槊看伪容^之后保證最大的一位被我們放在最后,因此每次比較之后待比較數(shù)可以減一,總共比較n-1次。
時(shí)間復(fù)雜度為O(n^2),空間復(fù)雜度為O(1)
優(yōu)點(diǎn):算法較為簡(jiǎn)單且對(duì)數(shù)量較少的數(shù)組排序操作簡(jiǎn)單,因?yàn)槊看蝺蓛杀容^大小后執(zhí)行交換,因此是穩(wěn)定排序。在最好的情況下(給定數(shù)組就是已經(jīng)有序的)時(shí)間復(fù)雜度為O(n)。
缺點(diǎn):在對(duì)大量數(shù)據(jù)的處理上的平均時(shí)間復(fù)雜度達(dá)到了O(n^2),耗費(fèi)時(shí)間較長(zhǎng)。
標(biāo)簽: