參考排序算法小結(jié)范文
時(shí)間:2022-07-09 09:40:00
導(dǎo)語(yǔ):參考排序算法小結(jié)范文一文來(lái)源于網(wǎng)友上傳,不代表本站觀(guān)點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。
花了很長(zhǎng)時(shí)間終于把排序的基礎(chǔ)學(xué)了一下,這段時(shí)間學(xué)了很多東西,總結(jié)一下:
學(xué)的排序算法有:插入排序,合并排序,冒泡排序,選擇排序,希爾排序,堆排序,快速排序,計(jì)數(shù)排序,基數(shù)排序,桶排序(沒(méi)有實(shí)現(xiàn))。比較一下學(xué)習(xí)后的心得。
我不是很清楚他們的時(shí)間復(fù)雜度,也真的不知道他們到底誰(shuí)快誰(shuí)慢,書(shū)上的推導(dǎo)我確實(shí)只是小小了解,并沒(méi)有消化。也沒(méi)有完全理解他們的精髓,所以又什么錯(cuò)誤的還需要高手指點(diǎn)。呵呵。
1.普及一下排序穩(wěn)定,所謂排序穩(wěn)定就是指:如果兩個(gè)數(shù)相同,對(duì)他們進(jìn)行的排序結(jié)果為他們的相對(duì)順序不變。例如A={1,2,1,2,1}這里排序之后是A={1,1,1,2,2}穩(wěn)定就是排序后第一個(gè)1就是排序前的第一個(gè)1,第二個(gè)1就是排序前第二個(gè)1,第三個(gè)1就是排序前的第三個(gè)1。同理2也是一樣。這里用顏色標(biāo)明了。不穩(wěn)定呢就是他們的順序不應(yīng)和開(kāi)始順序一致。也就是可能會(huì)是A={1,1,1,2,2}這樣的結(jié)果。
2.普及一下原地排序:原地排序就是指不申請(qǐng)多余的空間來(lái)進(jìn)行的排序,就是在原來(lái)的排序數(shù)據(jù)中比較和交換的排序。例如快速排序,堆排序等都是原地排序,合并排序,計(jì)數(shù)排序等不是原地排序。
3.感覺(jué)誰(shuí)最好,在我的印象中快速排序是最好的,時(shí)間復(fù)雜度:n*log(n),不穩(wěn)定排序。原地排序。他的名字很棒,快速嘛。當(dāng)然快了。我覺(jué)得他的思想很不錯(cuò),分治,而且還是原地排序,省去和很多的空間浪費(fèi)。速度也是很快的,n*log(n)。但是有一個(gè)軟肋就是如果已經(jīng)是排好的情況下時(shí)間復(fù)雜度就是n*n,不過(guò)在加入隨機(jī)的情況下這種情況也得以好轉(zhuǎn),而且他可以做任意的比較,只要你能給出兩個(gè)元素的大小關(guān)系就可以了。適用范圍廣,速度快。
4.插入排序:n*n的時(shí)間復(fù)雜度,穩(wěn)定排序,原地排序。插入排序是我學(xué)的第一個(gè)排序,速度還是很快的,特別是在數(shù)組已排好了之后,用它的思想來(lái)插入一個(gè)數(shù)據(jù),效率是很高的。不用全部排。他的數(shù)據(jù)交換也很少,只是數(shù)據(jù)后移,然后放入要插入的數(shù)據(jù)。(這里不是指調(diào)用插入排序,而是用它的思想)。我覺(jué)得,在數(shù)據(jù)大部分都排好了,用插入排序會(huì)給你帶來(lái)很大的方便。數(shù)據(jù)的移動(dòng)和交換都很少。
5.冒泡排序,n*n的時(shí)間復(fù)雜度,穩(wěn)定排序,原地排序。冒泡排序的思想很不錯(cuò),一個(gè)一個(gè)比較,把小的上移,依次確定當(dāng)前最小元素。他簡(jiǎn)單,穩(wěn)定排序,而且好實(shí)現(xiàn),所以用處也是比較多的。還有一點(diǎn)就是加上哨兵之后他可以提前退出。
熱門(mén)標(biāo)簽
相關(guān)文章
1黨課參考