利用python實(shí)現(xiàn)冒泡排序算法實(shí)例代碼
冒泡排序
冒泡排序(英語(yǔ):Bubble Sort)是一種簡(jiǎn)單的排序算法。它重復(fù)地遍歷要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。遍歷數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
冒泡排序算法的運(yùn)作如下:
1、比較相鄰的元素。如果第一個(gè)比第二個(gè)大(升序),就交換他們兩個(gè)。
2、對(duì)每一對(duì)相鄰元素作同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。這步做完后,最后的元素會(huì)是最大的數(shù)。
3、針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。
4、持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。
冒泡排序,一個(gè)經(jīng)典的排序算法,因在算法運(yùn)行中,極值會(huì)像水底的氣泡一樣逐漸冒出來(lái),因此而得名。
冒泡排序的過(guò)程是比較兩個(gè)相鄰元素的大小,然后根據(jù)大小交換位置,這樣從列表左端開(kāi)始冒泡,最后最大值會(huì)依次從右端冒出。

python實(shí)現(xiàn)冒泡排序:
def bubble_sort(nums):
for i in range(len(nums) - 1):
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
python實(shí)現(xiàn)冒泡排序的核心思想是通過(guò)從列表一端迭代循環(huán)元素,再通過(guò)一個(gè)循環(huán)讓這個(gè)元素之后的元素相鄰兩個(gè)比較,從而依次將最大值移動(dòng)到最末端,如下圖示意。

本想放gif圖的,放不上有點(diǎn)問(wèn)題。
關(guān)于冒泡排序的時(shí)間復(fù)雜度,在上面python實(shí)現(xiàn)的代碼中時(shí)間復(fù)雜度是n的平方,當(dāng)然可以再考慮一下極端的情況:當(dāng)隊(duì)列已經(jīng)從小到大排好序或者從大到小排好序,從小到大排好順序時(shí)可以只掃描一遍就結(jié)束排序,此時(shí)時(shí)間復(fù)雜度為O(n),如果是從大到小,那么就需要掃描n-1次,同時(shí)需要比較交換n-1次,時(shí)間復(fù)雜度為n的平方 。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
python注冊(cè)釘釘回調(diào)事件的實(shí)現(xiàn)
釘釘有回調(diào)事件流程,本文主要介紹了python注冊(cè)釘釘回調(diào)事件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Django接受前端數(shù)據(jù)的幾種方法總結(jié)
下面小編就為大家?guī)?lái)一篇Django接受前端數(shù)據(jù)的幾種方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
pytorch之torch.flatten()和torch.nn.Flatten()的用法
這篇文章主要介紹了pytorch之torch.flatten()和torch.nn.Flatten()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Python讀取Ansible?playbooks返回信息示例解析
這篇文章主要為大家介紹了Python讀取Ansible?playbooks返回信息示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
TensorFlow通過(guò)文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn)
今天小編就為大家分享一篇TensorFlow通過(guò)文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python利用platform模塊獲取系統(tǒng)信息
這篇文章主要介紹了python利用platform模塊獲取系統(tǒng)信息,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-10-10
零基礎(chǔ)學(xué)Python之前需要學(xué)c語(yǔ)言嗎
在本篇文章里小編給大家整理的是一篇關(guān)于零基礎(chǔ)學(xué)Python之前需要學(xué)c語(yǔ)言關(guān)系的文章,需要的朋友們可以參考下。2020-07-07
Python?Pandas多種添加行列數(shù)據(jù)方法總結(jié)
在進(jìn)行數(shù)據(jù)分析時(shí)經(jīng)常需要按照一定條件創(chuàng)建新的數(shù)據(jù)列,然后進(jìn)行進(jìn)一步分析,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas多種添加行列數(shù)據(jù)方法的相關(guān)資料,需要的朋友可以參考下2022-07-07
PyTorch搭建LSTM實(shí)現(xiàn)時(shí)間序列負(fù)荷預(yù)測(cè)
這篇文章主要為大家介紹了PyTorch搭建LSTM實(shí)現(xiàn)時(shí)間序列負(fù)荷預(yù)測(cè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

