python冒泡函數(shù)優(yōu)化 python冒泡程序

python寫冒泡排序

冒泡排序(Bubble Sort),是一種計(jì)算機(jī)科學(xué)領(lǐng)域的較簡(jiǎn)單的排序算法。

道縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,道縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為道縣上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的道縣做網(wǎng)站的公司定做!

它重復(fù)地走訪過要排序的元素列,依次比較兩個(gè)相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯(cuò)誤就把他們交換過來(lái)。走訪元素的工作是重復(fù)地進(jìn)行直到?jīng)]有相鄰元素需要交換,也就是說該元素列已經(jīng)排序完成。

這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會(huì)上浮到頂端一樣,故名“冒泡排序”。

中文名

冒泡排序

外文名

Bubble Sort

所屬學(xué)科

計(jì)算機(jī)科學(xué)

時(shí)間復(fù)雜度

O(n2)

算法穩(wěn)定性

穩(wěn)定排序算法

快速

導(dǎo)航

算法分析算法描述優(yōu)化算法比較

算法原理

冒泡排序算法的原理如下:[1]

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

對(duì)每一對(duì)相鄰元素做同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。[1]

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

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

冒泡排序python代碼

.example-btn{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.example-btn:hover{color:#fff;background-color:#47a447;border-color:#398439}.example-btn:active{background-image:none}div.example{width:98%;color:#000;background-color:#f6f4f0;background-color:#d0e69c;background-color:#dcecb5;background-color:#e5eecc;margin:0 0 5px 0;padding:5px;border:1px solid #d4d4d4;background-image:-webkit-linear-gradient(#fff,#e5eecc 100px);background-image:linear-gradient(#fff,#e5eecc 100px)}div.example_code{line-height:1.4em;width:98%;background-color:#fff;padding:5px;border:1px solid #d4d4d4;font-size:110%;font-family:Menlo,Monaco,Consolas,"Andale Mono","lucida console","Courier New",monospace;word-break:break-all;word-wrap:break-word}div.example_result{background-color:#fff;padding:4px;border:1px solid #d4d4d4;width:98%}div.code{width:98%;border:1px solid #d4d4d4;background-color:#f6f4f0;color:#444;padding:5px;margin:0}div.code div{font-size:110%}div.code div,div.code p,div.example_code p{font-family:"courier new"}pre{margin:15px auto;font:12px/20px Menlo,Monaco,Consolas,"Andale Mono","lucida console","Courier New",monospace;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;border:1px solid #ddd;border-left-width:4px;padding:10px 15px} 排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。以下是冒泡排序算法:

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

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

說并沒有什么太大作用。 1. 算法步驟

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

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

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

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

2. 動(dòng)圖演示

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. JavaScript 代碼實(shí)現(xiàn) 實(shí)例 function bubbleSort ( arr ) {

var len = arr. length ;

for ( var i = 0 ; i arr [ j+ 1 ] :

? ? ? ? ? ? arr [ j ] , arr [ j + 1 ] = arr [ j + 1 ] , arr [ j ]

return arr

7. Go 代碼實(shí)現(xiàn) 實(shí)例 func bubbleSort ( arr [] int ) [] int {

? ? length := len ( arr )

? ? for i := 0 ; i length ; i ++ {

? ? ? ? ? ? for j := 0 ; j length - 1 - i ; j ++ {

? ? ? ? ? ? ? ? ? ? if arr [ j ] arr [ j + 1 ] {

? ? ? ? ? ? ? ? ? ? ? ? ? ? arr [ j ], arr [ j + 1 ] = arr [ j + 1 ], arr [ j ]

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? }

? ? return arr

}

8. Java 代碼實(shí)現(xiàn) 實(shí)例 public class BubbleSort implements IArraySort {

@Override

public int [ ] sort ( int [ ] sourceArray ) throws Exception {

? ? // 對(duì) arr 進(jìn)行拷貝,不改變參數(shù)內(nèi)容

? ? int [ ] arr = Arrays . copyOf ( sourceArray, sourceArray. length ) ;

? ? for ( int i = 1 ; i

在python中怎么進(jìn)行冒泡排序呢?

python代碼和運(yùn)行結(jié)果如下:

可見成功將亂序數(shù)組A按升序輸出

附源碼鏈接:冒泡排序

分享標(biāo)題:python冒泡函數(shù)優(yōu)化 python冒泡程序
轉(zhuǎn)載源于:http://muchs.cn/article20/doesjco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、品牌網(wǎng)站建設(shè)域名注冊(cè)、網(wǎng)站內(nèi)鏈、ChatGPT、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司