冒泡排序(Bubble Sort)
冒泡排序是一種簡(jiǎn)單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果它們的順序錯(cuò)誤就把它們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字
冒泡排序是一種簡(jiǎn)單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果它們的順序錯(cuò)誤就把它們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
選擇排序(Selection Sort)
選擇排序是一種簡(jiǎn)單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
改進(jìn)冒泡排序
可以通過設(shè)置一個(gè)標(biāo)志性變量pos,用于記錄每趟排序中最后一次進(jìn)行交換的位置。由于pos位置之后的記錄均已交換到位,故在進(jìn)行下一趟排序時(shí)只要掃描到pos位置即可。這樣可以減少排序的趟數(shù)。
改進(jìn)選擇排序
傳統(tǒng)的選擇排序每一趟排序操作只能找到一個(gè)最大值或最小值,但是我們可以利用在每趟排序中進(jìn)行正向和反向兩遍冒泡的方法一次可以得到兩個(gè)最終值(最大者和最小者),從而使排序趟數(shù)幾乎減少了一半。
算法分析
冒泡排序的時(shí)間復(fù)雜度為O(n^2),最佳情況下的時(shí)間復(fù)雜度為O(n),平均情況下的時(shí)間復(fù)雜度為O(n^2)。選擇排序的時(shí)間復(fù)雜度也為O(n^2),平均情況下的時(shí)間復(fù)雜度為O(n^2)。
由運(yùn)行結(jié)果可以看出,改進(jìn)后的冒泡排序和選擇排序的時(shí)間復(fù)雜度都更低,耗時(shí)更短了。大家可以親自嘗試下,運(yùn)行的時(shí)候最好將兩種算法寫在一個(gè)文件中運(yùn)行,否則會(huì)由于瀏覽器等原因產(chǎn)生誤差。
以上就是對(duì)冒泡排序和選擇排序算法的解析。對(duì)于初學(xué)者來說,掌握這些基本常用排序算法是非常重要的,它們?cè)趯?shí)際開發(fā)中有很廣泛的應(yīng)用。希望本文對(duì)大家有所幫助!