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

歡迎光臨散文網(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í)--算法--基本排序--冒泡法的評論 (共 條)

分享到微博請遵守國家法律
当阳市| 芒康县| 米林县| 沈阳市| 安福县| 五原县| 腾冲县| 镇江市| 盐城市| 滦南县| 孝昌县| 高要市| 逊克县| 彭山县| 太和县| 灵台县| 新丰县| 平顺县| 文昌市| 怀宁县| 虎林市| 孝感市| 海安县| 南部县| 巍山| 陆川县| 丹东市| 田林县| 丽水市| 舟曲县| 土默特右旗| 柯坪县| 木兰县| 冷水江市| 额尔古纳市| 邵阳市| 清水县| 玉屏| 和顺县| 涟水县| 嵊泗县|