五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

[洛谷]C++學(xué)習(xí)--算法--基本排序--冒泡法

2023-06-16 21:30 作者:5735733  | 我要投稿

[洛谷]C++學(xué)習(xí)--算法--基本排序--冒泡法

本蒟蒻又雙?叒叕來寫教程啦!

排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括:

圖1


圖2

關(guān)于時(shí)間復(fù)雜度

平方階 (O(n2)) 排序 各類簡單排序:直接插入、直接選擇和冒泡排序。

線性對數(shù)階 (O(nlog2n)) 排序 快速排序、堆排序和歸并排序;

O(n1+§)) 排序,§ 是介于 0 和 1 之間的常數(shù)。 希爾排序

線性階 (O(n)) 排序 基數(shù)排序,此外還有桶、箱排序。

關(guān)于穩(wěn)定性

穩(wěn)定的排序算法:冒泡排序、插入排序、歸并排序和基數(shù)排序。

不是穩(wěn)定的排序算法:選擇排序、快速排序、希爾排序、堆排序。

名詞解釋:

  • n:數(shù)據(jù)規(guī)模

  • k:"桶"的個(gè)數(shù)

  • In-place:占用常數(shù)內(nèi)存,不占用額外內(nèi)存

  • Out-place:占用額外內(nèi)存

  • 穩(wěn)定性:排序后 2 個(gè)相等鍵值的順序和排序之前它們的順序相同

了解了排序算法的基本理念,現(xiàn)在我們來看一下十大基本算法:

  • 1、冒泡排序

  • 2、選擇排序

  • 3、插入排序

  • 4、希爾排序

  • 5、歸并排序

  • 6、快速排序

  • 7、堆排序

  • 8、計(jì)數(shù)排序

  • 9、桶排序

  • 10、基數(shù)排序

本篇文章講算法-----冒泡法

1.1 冒泡排序

冒泡排序(Bubble Sort)也是一種簡單直觀的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來是因?yàn)樵叫〉脑貢?jīng)由交換慢慢"浮"到數(shù)列的頂端。

作為最簡單的排序算法之一,冒泡排序給我的感覺就像 Abandon 在單詞書里出現(xiàn)的感覺一樣,每次都在第一頁第一位,所以最熟悉。冒泡排序還有一種優(yōu)化算法,就是立一個(gè) flag,當(dāng)在一趟序列遍歷中元素沒有發(fā)生交換,則證明該序列已經(jīng)有序。但這種改進(jìn)對于提升性能來

說并沒有什么太大作用。

1. 算法步驟

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

對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。這步做完后,最后的元素會是最大的數(shù)。

針對所有的元素重復(fù)以上的步驟,除了最后一個(gè)。

持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。

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

對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對,這樣在最后的元素應(yīng)該會是最大的數(shù);

針對所有的元素重復(fù)以上的步驟,除了最后一個(gè);

重復(fù)前面的三步驟,直到排序完成。


2. 動圖演示

冒泡排序動畫

3. 什么時(shí)候最快

當(dāng)輸入的數(shù)據(jù)已經(jīng)是正序時(shí)(都已經(jīng)是正序了,我還要你冒泡排序有何用啊)。

4. 什么時(shí)候最慢

當(dāng)輸入的數(shù)據(jù)是反序時(shí)(寫一個(gè) for 循環(huán)反序輸出數(shù)據(jù)不就行了,干嘛要用你冒泡排序呢,我是閑的嗎)。

5.代碼實(shí)現(xiàn)

這里因?yàn)槭荂++系列教程,所以只展示C++的代碼

改進(jìn)版

本文到此結(jié)束了,記得點(diǎn)贊投幣哦!

文獻(xiàn)來源https://www.runoob.com/w3cnote/bubble-sort.html

[洛谷]C++學(xué)習(xí)--算法--基本排序--冒泡法的評論 (共 條)

分享到微博請遵守國家法律
丰顺县| 武威市| 高雄县| 襄垣县| 梁平县| 文登市| 武平县| 浦县| 延川县| 庆安县| 林芝县| 广德县| 鄯善县| 沁阳市| 呼伦贝尔市| 永宁县| 新泰市| 师宗县| 肥东县| 屯门区| 博兴县| 阿鲁科尔沁旗| 承德县| 太康县| 嘉祥县| 应用必备| 恩施市| 饶阳县| 平潭县| 奇台县| 津南区| 鹿泉市| 北安市| 龙游县| 岚皋县| 潮州市| 海南省| 扎囊县| 文安县| 黄石市| 中江县|