前言
面試的時候經常有面試官喜歡問如何進行冒泡排序?這個問題相信能難倒一批英雄好漢,本篇就詳細講解如何用python進行冒泡排序。
一、基本原理
1.概念:
二、交換兩個數
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-8
li = [1, 3, 10, 9, 21, 35, 4, 6]
s = range(len(li))[::-1]
print s
for 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接口自動化QQ群:226296743
[[1, 3, 10, 9, 21, 35, 4, 6]