日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法 / 排序算法(2)

發(fā)布時(shí)間:2024/10/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法 / 排序算法(2) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、歸并排序

1、原理

? ? ? ?采用分治思想。將數(shù)組分成前后兩部分,先將這兩部分進(jìn)行排序,然后再將二者合并即可。

2、原地排序?

? ? ? ?不屬于原地排序。因?yàn)槊看魏喜⒍夹枰暾?qǐng)大小為 n 的臨時(shí)數(shù)組用于保存合并之后的結(jié)果,所以空間復(fù)雜度為O(n)。

3、穩(wěn)定性排序?

? ? ? ?屬于穩(wěn)定排序算法。為了達(dá)到上述目的,只需要在合并時(shí)將前后兩部分相同的元素中的屬于前面部分的數(shù)據(jù)先放入臨時(shí)數(shù)組即可。

4、時(shí)間復(fù)雜度

? ? ? ?因?yàn)榇a采用了遞歸方式,所以這里需要使用遞歸公式來(lái)估計(jì)時(shí)間復(fù)雜度。遞歸公式如下:

? ? ? ?這里的 T(a) 表示單次遞歸時(shí)的耗時(shí),T(a1)代表均分之后前一部分的排序時(shí)間,T(a2)代表均分之后后一部分的排序時(shí)間,t 為二者合并時(shí)間。通過(guò)代碼發(fā)現(xiàn),合并 n 個(gè)數(shù)據(jù),需要比較 n 次,如下圖所示:

故所以 t = n 。?

? ? ? ?對(duì)于歸并排序,時(shí)間復(fù)雜度的公式:

? ? ? ?經(jīng)過(guò)遞推,則公式如下:

? ? ? ?當(dāng)?時(shí),。將 k 代入上述公式中,則結(jié)果為??,這里面的??。所以時(shí)間復(fù)雜度為 O(nlogn)

二、快速排序

1、原理

? ? ? ?采用分治思想,是優(yōu)化之后的冒泡排序。隨機(jī)從數(shù)列找到一個(gè)數(shù)作為中心點(diǎn)(pivot),小于該數(shù)的放在左邊,大于該數(shù)的放在右邊,上述操作取名為“分區(qū)”。上述兩部分?jǐn)?shù)據(jù)在再依次分區(qū),直至數(shù)據(jù)不能再分區(qū)為止,這樣數(shù)據(jù)就變成有序的了。

2、原地排序?

? ? ? 屬于原地排序算法。因?yàn)樵诜謪^(qū)的過(guò)程中,使用了交換數(shù)據(jù)的方法,并沒(méi)有建 n 個(gè)臨時(shí)內(nèi)存,所以空間復(fù)雜度為 O(1) 。

3、穩(wěn)定性排序?

? ? ? 不屬于穩(wěn)定性排序。栗子:

6、7、9、6、3、5

? ? ?經(jīng)過(guò)排序之后發(fā)現(xiàn),第1個(gè)“6”和第2個(gè)“6”發(fā)生了位置顛倒,所以該算法不屬于穩(wěn)定性排序算法。

4、時(shí)間復(fù)雜度

(1)最好的情況

? ? ? ?每次分區(qū)時(shí)選擇的 pivot?均是數(shù)組的中間值,那么時(shí)間復(fù)雜度就是 O(nlogn)

(2)最壞的情況

? ? ? ?原數(shù)組已經(jīng)有序但是是逆序,例如:102、10、8、5、2,目標(biāo)是從小到大排序,每次分區(qū)時(shí)選擇的 pivot 均是最右面的值,則需要比較 n-1 、n-2、n-3、……、1,那么時(shí)間復(fù)雜度的和就是?O(n^2)?

(3)平均時(shí)間復(fù)雜度

? ? ? ?(后續(xù)補(bǔ)充)

三、總結(jié)

1、性質(zhì)

算法種類(lèi)時(shí)間復(fù)雜度空間復(fù)雜度原地排序穩(wěn)定排序
歸并排序O(nlogn)O(n)×
快速排序O(nlogn)O(1)×

2、源碼

Github

?

(SAW:Game Over!)

總結(jié)

以上是生活随笔為你收集整理的数据结构与算法 / 排序算法(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。