python筆記2-冒泡排序

來源:互聯網
上載者:User

標籤:比較   sort   不用   面試   從後往前   bubble   代碼   概念   color   

前言

面試的時候經常有面試官喜歡問如何進行冒泡排序?這個問題相信能難倒一批英雄好漢,本篇就詳細講解如何用python進行冒泡排序。

一、基本原理

1.概念:

冒泡排序(Bubble Sort),是一種電腦領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。2.演算法原理:冒泡排序演算法的運作如下:(從後往前)>比較相鄰的元素。 如果第一個比第二個大,就交換他們兩個。>對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。>針對所有的元素重複以上的步驟,除了最後一個。>持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

 

二、交換兩個數

1.如果a = 10 , b = 20如何交換兩個數呢?

2.實現兩個數的交換原理其實很簡單,設一個臨時變數c就可以了:

>先把a的值傳給c,此時c的值就是10了,a的值還是10

>然後把b的值傳給a,此時a的值是20,b的值還是20

>最後把c的值傳給b, 此時b的值是10

3.python裡面交換兩個數不用那麼複雜,用這個方法就行了:

>a , b = b,  a

 

三、遍曆比較相鄰的數

1.比如一個隊列是:[1, 3, 10, 9, 21, 35, 4, 6]

2.可以做一次遍曆,比較相鄰的數,前面的數比後面的數大就交換,這樣第一次遍曆可以把最大的數下沉到最後一個位置

3.為了便於理解,交換過的地方用紅色框框圈出來了

 

四、迴圈下沉

1.上面的遍曆比較只做了一次下沉,把最大的數下沉到最後一個位置了,那接下來就需要把第二大的數,下沉到倒數第二個位置,

依次迴圈,一直到最小的數在最上面。

2.這裡s是先計算li隊列的長度,然後把range函數反轉了,變成:[7, 6, 5, 4, 3, 2, 1, 0]

 

五、sort()排序

1.講真,python裡面排序不用這麼麻煩,一個函數搞定:sort()

 

六、參考代碼

# coding:utf-8li = [1, 3, 10, 9, 21, 35, 4, 6]s = range(len(li))[::-1]print sfor i in s:    for j in range(i):        if li[j] > li[j + 1]:            li[j], li[j + 1] = li[j + 1], li[j]# 排序函數# li.sort() print li

 

python筆記2-冒泡排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.