常見(jiàn)的幾種排序算法總結(jié)
發(fā)布時(shí)間:2025-12-14 | 來(lái)源:互聯(lián)網(wǎng)轉(zhuǎn)載和整理
對(duì)于非科班生的我來(lái)說(shuō)算法似乎對(duì)我來(lái)說(shuō)是個(gè)難點(diǎn),查閱了一些資料,趁此來(lái)了解一下幾種排序算法。
首先了解一下,什么是程序
關(guān)于排序算法通常我們所說(shuō)的往往指的是內(nèi)部排序算法,即數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序。
排序算法大體可分為兩種:
一種是比較排序,時(shí)間復(fù)雜度O(nlogn)~O(n^2),主要有:冒泡排序,選擇排序,插入排序,歸并排序,堆排序,快速排序等。
另一種是非比較排序,時(shí)間復(fù)雜度可以達(dá)到O(n),主要有:計(jì)數(shù)排序,基數(shù)排序,桶排序等
冒泡排序它重復(fù)地走訪過(guò)要排序的元素,一次比較相鄰兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們調(diào)換過(guò)來(lái),直到?jīng)]有元素再需要交換,排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫?或越大)的元素會(huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
選擇排序類似于冒泡排序,只不過(guò)選擇排序是首先在未排序的序列中找到最小值(最大值),放到序列的起始位置,然后再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最?。ù螅┰?,放到已排序序列的末尾,以此類推,直到所有元素均排序完畢。
插入排序比冒泡排序和選擇排序更有效率,插入排序類似于生活中抓撲克牌來(lái)。
插入排序具體算法描述,以數(shù)組[3,2,4,5,1]為例。
前面三種排序算法只有教學(xué)價(jià)值,因?yàn)樾实停苌賹?shí)際使用。歸并排序(Mergesort)則是一種被廣泛使用的排序方法。
它的基本思想是,將兩個(gè)已經(jīng)排序的數(shù)組合并,要比從頭開(kāi)始排序所有元素來(lái)得快。因此可以將數(shù)組拆開(kāi),分成n個(gè)只有一個(gè)元素的數(shù)組,然后不斷地兩兩合并,直到全部排序完成。
以對(duì)數(shù)組[3,2,4,5,1]進(jìn)行從小到大排序?yàn)槔?,步驟如下:
有了merge函數(shù),就可以對(duì)任意數(shù)組排序了。基本方法是將數(shù)組不斷地拆成兩半,直到每一半只包含零個(gè)元素或一個(gè)元素為止,然后就用merge函數(shù),將拆成兩半的數(shù)組不斷合并,直到合并成一整個(gè)排序完成的數(shù)組。
快速排序(quicksort)是公認(rèn)最快的排序算法之一,有著廣泛的應(yīng)用。
快速排序算法步驟
參考:
常用排序算法總結(jié)(一)
阮一峰-算法總結(jié)
下一篇:word的基本操作教程