簡單易懂的氣泡排序

2022-06-24 22:48:18 字數 1344 閱讀 6825

這次介紹的是最簡單的氣泡排序.......好了廢話不多說先看下面

#先定義乙個變數,假設我們要排列下面列表中的元素的順序

i= [10,4,7,2,1,9,6]

#先分析一下

首先先弄懂氣泡排序,兩兩相比,第一位比第二位大的話,就相互換位置,.....依次類推,直到最後排完的順序應該是[1,2,4,6,7,9,10]

先假設第一位和第二位相比較

這邊可以用i[0] 跟i[1] ,根據索引獲取值,這邊都不用多說了哈

第一次:i[0]   跟    i[1]

第二次:i[1]  跟     i[2]

第i次:i[len(i)-2]  跟 i[len(i)-1]    這邊是最後第二位和最後第一位相比較

好了,弄懂以上的邏輯,下面開始寫**吧

#定義乙個變數

j = 0

while j < len(i)-1: #控制迴圈,先弄懂整個迴圈結束的時候,需要比較多少次

if i[j]>i[j+1]: #如果第一位大於第二位的話,執行以下**

i[j],i[j+1] = i[j+1],i[j] #互換位置

j+=1 #每次迴圈+1

print(i)

是不是很簡單?你以為這就完事了?錯了這只是把最大的那個數迴圈完了,可以列印看看,現在最大的那個10是不是已經到最後面了?

好了下面開始進一步操作,現在知道上面的**全部執行完會把最大的那個數放到最後,那現在知道該如何操作了吧?

很簡單就是再套個外迴圈就可以了,那外迴圈該迴圈多少次呢?可以根據列表的長度減1來操作就可以了,下面開始操作

i= [10,4,7,2,1,9,6]

a = 0

while a < len(i) - 1: #控制外層迴圈

# 定義乙個變數

j = 0

while j < len(i) - 1: # 控制內層迴圈

if i[j] > i[j + 1]: # 如果第一位大於第二位的話,執行以下**

i[j], i[j + 1] = i[j + 1], i[j] # 互換位置

j += 1 # 每次迴圈+1

a+=1

print(i)

是不是很簡單? 其實內部還有很多優化的地方,上面的列表實際其實比較了36次,然而假如我換乙個列表呢?

比如列表[1,2,3,8,7,5,4],其實有很多次比較都可以省略的,這樣會優化了不少,不然要是用上面的**,還是一樣每次都要比較這麼多次數的。

如何優化呢?下次再更新優化後的哈

單鏈表的氣泡排序(簡單易懂)

大家在做需要排名的專案的時候,需要把各種資料從高到低排序,如果用的氣泡排序的話,處理陣列是十分簡單的,因為陣列的儲存空間的連續的,可以通過下標就可以簡單的實現,但如果是鍊錶的話,是隨機分配的,不能像陣列那樣通過下標就直接實現。所以在這裡給大家介紹乙個簡單一點的氣泡排序 氣泡排序的是交換排序其中的一種...

氣泡排序 通俗易懂

氣泡排序是一種簡單的排序演算法,它也是一種穩定排序演算法。其實現原理是重複走訪過要排序的元素列,依次比較兩個相鄰的元素,如果當該對元素順序不正確時進行交換過來。一直重複這個過程,直到沒有任何兩個相鄰元素可以交換,就表明完成了排序。注意 一般情況下,稱某個排序演算法穩定 指的是當待排序序列中有相同的元...

簡單的氣泡排序

氣泡排序的原理非常簡單,它重複地走訪過要排序的數列,一次比較兩個元 素,如果他們的順序錯誤就把他們交換過來。比較相鄰的元素。如果第乙個比第二個大 公升序 就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步 做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除...