js排序

一、冒泡排序


冒泡

1、算法描述和具體實(shí)現(xiàn)

大致流程描述:

(1)比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換它們兩個(gè);

(2)每次遍歷結(jié)束,能夠找到該次遍歷過的元素中的最大值

(3)如果還有沒排序過的元素,繼續(xù)(1)

代碼實(shí)現(xiàn):

冒泡排序

tips:一種原地排序算法,穩(wěn)定排序算法。

有優(yōu)化空間,主要從兩方面進(jìn)行優(yōu)化:

①減少外層遍歷次數(shù)

②讓每次遍歷能找到兩個(gè)極值

平均時(shí)間復(fù)雜度:O(n^2)

空間復(fù)雜度: O(1)

穩(wěn)定性:穩(wěn)定

二、選擇排序

找到數(shù)組中的最?。ù螅┲担⑵浞诺降谝晃?,然后找到第二小的值放到第二位……以此類推。

大致流程描述:

(1)取出未排序部分的第一個(gè)元素,遍歷該元素之后的部分并比較大小。對于第一次遍歷,就是取出第一個(gè)元素

(2)如果有更小的,與該元素交換位置

(3)每次遍歷都能找出剩余元素中的最小值并放在已排序部分的最后

代碼實(shí)現(xiàn):

選擇排序

tips:一種原地排序算法,不穩(wěn)定排序算法。

平均時(shí)間復(fù)雜度:O(n^2)

空間復(fù)雜度: O(1)

穩(wěn)定性:不穩(wěn)定

三、插入排序

直接插入排序

它的基本思想是: 將待排序的元素按照大小順序, 依次插入到一個(gè)已經(jīng)排好序的數(shù)組之中, 直到所有的元素都插入進(jìn)去.

大致流程:

(1)取未排序部分的第一個(gè)元素。第一次遍歷時(shí),將第一個(gè)元素作為已排序元素,從第二個(gè)元素開始取

(2)遍歷前面的已排序元素,并與這個(gè)未排序元素比較大小,找到合適的位置插入

(3)繼續(xù)執(zhí)行(1)

代碼實(shí)現(xiàn):

插入排序

tips:一種原地排序算法,穩(wěn)定排序算法。

平均時(shí)間復(fù)雜度:O(n^2)

空間復(fù)雜度: O(1)

穩(wěn)定性:穩(wěn)定

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容