成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python 算法之冒泡排序

LeexMuller / 1792人閱讀

摘要:冒泡排序冒泡排序英語是一種簡(jiǎn)單的排序算法。冒泡排序算法的運(yùn)作如下比較相鄰的元素。冒泡排序動(dòng)態(tài)圖代碼實(shí)現(xiàn)我們來逐行分析下。這里的減是為了不在遍歷之前排序好的元素。記錄交換的次數(shù),但代表沒有交換,序列已經(jīng)有序。

冒泡排序

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

冒泡排序算法的運(yùn)作如下:

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

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

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

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

冒泡排序動(dòng)態(tài)圖

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

我們來逐行分析下。

def bubble_sort(list):
  n = len(list):
  for j in range(n - 1):

一至三行都是常規(guī)操作,定義函數(shù),獲取數(shù)據(jù)長度,循環(huán)遍歷。

def bubble_sort(list):
  n = len(list):
  for j in range(n - 1):
    count = 0

第四行定義一個(gè) count 變量,用來記錄交換的次數(shù)。

def bubble_sort(list):
  n = len(list):
  for j in range(n - 1):
    count = 0
    for i in range(1, n - 1 - j)

第五行在定義一個(gè) for 循環(huán),用來遍歷剩下的數(shù)據(jù),注意 range 第二個(gè)參數(shù)是 n - 1 - j。這里的減 j 是為了不在遍歷之前排序好的元素。

def bubble_sort(list):
  n = len(list):
  for j in range(n - 1):
    count = 0
    for i in range(1, n - 1 - j)
      if list[i] > list[i + 1]
        list[i], list[i + 1] = list[i + 1], list[i]

第六,七行比較相鄰兩個(gè)元素的大小,如果當(dāng)前元素(list[i])大于下一個(gè)元素(list[i + 1]),則交換兩個(gè)元素的值。

def bubble_sort(list):
    n = len(list)
    for j in range(n - 1):
        count = 0
        for i in range(0, n - 1 - j):
            if list[i] > list[i + 1]:
                list[i], list[i + 1] = list[i + 1], list[i]
                count += 1
        if count == 0:
            break

第八,九,十行。記錄交換的次數(shù),但 count == 0 代表沒有交換,序列已經(jīng)有序。

寫在最后

歡迎大家關(guān)注我的公眾號(hào)「癡?!?,每天分享 Python 知識(shí)。后臺(tái)回復(fù)「python爬蟲」,免費(fèi)領(lǐng)取最新 python 教學(xué)視頻。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41572.html

相關(guān)文章

  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實(shí)現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...

    GeekQiaQia 評(píng)論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實(shí)現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...

    cgspine 評(píng)論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實(shí)現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...

    lufficc 評(píng)論0 收藏0
  • Github標(biāo)星2w+,熱榜第一,如何用Python實(shí)現(xiàn)所有算法

    摘要:歸并排序歸并排序,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為大符號(hào)。以此類推,直到所有元素均排序完畢。與快速排序一樣都由托尼霍爾提出的,因而也被稱為霍爾選擇算法。 showImg(https://segmentfault.com/img/remote/1460000019096360);編譯:周素云、蔣寶尚 學(xué)會(huì)了Python基礎(chǔ)知識(shí),想進(jìn)階一下,那就來點(diǎn)算法吧!畢竟編程語言只...

    zxhaaa 評(píng)論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列歸并排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。用一張圖概括歸并排序英語,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    zhou_you 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

LeexMuller

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<