最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

《漫畫算法2: 小灰的算法進(jìn)階》第一章 排序算法進(jìn)階

2023-03-23 22:59 作者:方程星  | 我要投稿

什么是選擇排序

選擇排序:每一輪選出最小元素直接交換到左側(cè)

選擇排序

選擇排序時(shí)間復(fù)雜度:O(n^2)

選擇排序空間復(fù)雜度:O(1)

選擇排序具有不穩(wěn)定性

什么是插入排序

插入排序:維護(hù)一個(gè)有序區(qū),把元素一個(gè)個(gè)插入有序區(qū)的適當(dāng)位置,直到所有元素都有序?yàn)橹埂?/p>

給定無序數(shù)組

把數(shù)組的首元素5作為有序區(qū),此時(shí)有序區(qū)只有5這一個(gè)元素
讓元素8和有序區(qū)的元素依次比較。8>5,所以元素8和元素5無須交換。此時(shí)有序區(qū)的元素增加到兩個(gè)

6依次與8、5比較,6<8,6與8交換,6>5,6與5無需交換,此時(shí)有序區(qū)又2,6,8三個(gè)元素
插入排序一共會(huì)進(jìn)行(數(shù)組長(zhǎng)度-1)輪

插入排序的優(yōu)化


要進(jìn)行第3輪操作
暫存元素3

3與前一個(gè)元素8進(jìn)行比較,3<8,8復(fù)制到它的下一個(gè)位置

3與6進(jìn)行比較,3<6,6復(fù)制到它的下一個(gè)位


3與5進(jìn)行比較,3<5,5復(fù)制到它的下一個(gè)位

把暫存的3存放到數(shù)組首位? ?

插入排序最壞的時(shí)間復(fù)雜度O(n^2)

插入排序的空間復(fù)雜度O(1)

什么是希爾排序


希爾排序

希爾排序:逐步分組進(jìn)行粗調(diào),再進(jìn)行直接插入排序的思想上面示例中所使用的分組跨度(4,2,1),被稱為希爾排序的增量,增量的選擇可以有很多種。在示例中所用的逐步折半的增量方法,是Donald Shell在發(fā)明希爾排序時(shí)提出的一種樸素方法,被稱為希爾增量。

希爾排序的優(yōu)化

為了保證分組粗調(diào)沒有盲區(qū),每一輪的增量需要彼此“互質(zhì)”,也就是沒有除1之外的公約數(shù)。

其中最具代表性的是Hibbard增量和Sedgewick增量。

Hibbard的增量序列如下:

1, 3, 7, 15……

通項(xiàng)公式為2k-1

利用此種增量方式的希爾排序,最壞時(shí)間復(fù)雜度是O(n^(3/2))

Sedgewick的增量序列如下:

1, 5, 19, 41, 109……

通項(xiàng)公式為9×4k-9×2k+1或者4k-3×2k+1。

利用此種增量方式的希爾排序,最壞時(shí)間復(fù)雜度是O(n^(4/3))

希爾排序是不穩(wěn)定排序

什么是歸并排序

分組
歸并
兩個(gè)長(zhǎng)度為4的集合
創(chuàng)建一個(gè)額外的大集合,用于存儲(chǔ)歸并結(jié)果,長(zhǎng)度是兩個(gè)小集合之和。
(p1,p2,p是三個(gè)輔助指針,用于記錄當(dāng)前操作的位置。)
從左到右逐一比較兩個(gè)小集合中的元素,把較小的元素優(yōu)先放入大集合。
由于1<2,所以把元素1放入大集合,指針p1和p各右移一位
由于2<3,所以把元素2放入大集合,指針p2和p各右移一位
由于3<7,所以把元素3放入大集合,指針p1和p各右移一位
由于5<7,所以把元素5放入大集合,指針p1和p各右移一位
由于6<7,所以把元素6放入大集合,指針p1和p各右移一位;此時(shí)左側(cè)的小集合已經(jīng)沒有元素可用
從另一個(gè)還有剩余元素的集合中,把剩余元素按順序復(fù)制到大集合尾部

歸并排序的時(shí)間復(fù)雜度為O(nlogn)

歸并排序的空間復(fù)雜度為O(n)

歸并排序是穩(wěn)定排序,兩個(gè)值相同的元素在歸并之后,左側(cè)的元素仍然在左,右側(cè)的元素仍然在右

基數(shù)排序

基數(shù)排序


基數(shù)排序(Radix Sort):把字符串元素按位拆分,每一位進(jìn)行一次計(jì)數(shù)排序的算法

基數(shù)排序既可以從高位優(yōu)先進(jìn)行排序(Most Significant Digit first,簡(jiǎn)稱MSD),也可以從低位優(yōu)先進(jìn)行排序(Least Significant Digit first,簡(jiǎn)稱LSD)

基數(shù)排序的時(shí)間復(fù)雜度是O(k(n+m))

基數(shù)排序的空間復(fù)雜度為O(n+m)

基數(shù)排序是線性排序算法

小結(jié)

匯總





《漫畫算法2: 小灰的算法進(jìn)階》第一章 排序算法進(jìn)階的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
敦煌市| 南江县| 留坝县| 佛山市| 怀化市| 昌乐县| 宁城县| 彭阳县| 襄樊市| 霞浦县| 北川| 黄浦区| 定远县| 盘山县| 五家渠市| 青岛市| 九寨沟县| 阜阳市| 左权县| 博兴县| 自贡市| 綦江县| 海阳市| 清新县| 呼玛县| 苍梧县| 宜兰市| 焉耆| 哈尔滨市| 屏东县| 晴隆县| 绥阳县| 嘉禾县| 南岸区| 博野县| 张家口市| 鄂托克旗| 乌兰浩特市| 互助| 汝南县| 同心县|